linux 重定向中的 &> 和 >的作用?
1>
2>的作用
上面两个的作用呢?
ls llllllll page1.html &> log4.txt
ls page1.html > log2.txt
ls llllllll page1.html > log3.txt 2>&1
这几个 在你的例子里结果都一样阿,没区别阿 展开
linux重定向中&>和>&是一个意思,是“复制一个文件描述符”的意思。
一、linux重定向的设备代码
标准输入(stdin) 代码为 0 ,实际映射关系:/dev/stdin -> /proc/self/fd/0
标准输出(stdout)代码为 1 , 实际映射关系:/dev/stdout -> /proc/self/fd/1
标准错误输出(stderr)代码为 2 ,实际映射关系: /dev/stderr ->/pro/self/fd/2
举例:正常输出和错误信息都不显示,把标准输出和标准错误都重定向到/dev/null
# ls 1>/dev/null 2>/dev/null
二、linux重定向的符号意义
1. > 和 < 分别代表重定向的方向,是从左到右还是从右到左
2. >> 和 << 代表追加,也就是不改变重定向目标文件原有的内容,追加在后面。
#举例: 将执行 "ls -lag" 命令的结果追加到文件 lee.dat 中
ls -lag >> lee.dat
3. >&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;
4. <&n 标准输入复制自文件描述符 n;
#举例: 让标准错误输出和标准输入一样都被存入到文件中
find /home -name lee* > all_lee 2>& 1
5. n<&- 表示将 n 号输入关闭
6. <&- 表示关闭标准输入(键盘)
7. n>&- 表示将 n 号输出关闭
8. >&- 表示将标准输出关闭
#举例: 关闭 1 ,2 文件描述符
ls test.sh test1.sh 1>&- 2>&-
1 是 STDOUT, 2 是 STDERR, 2>&1 就是 STDOUT 和 STDERR
同导向到同一文件里, 例
nc10@your-5554c55be4 ~
$ ls llllllll
ls: 无法访问 llllllll: No such file or directory
nc10@your-5554c55be4 ~
$ ls llllllll 2> log.txt
nc10@your-5554c55be4 ~
$ ls page1.html > log2.txt
nc10@your-5554c55be4 ~
$ cat log.txt log2.txt
ls: 无法访问 llllllll: No such file or directory
page1.html
nc10@your-5554c55be4 ~
$ ls llllllll page1.html > log3.txt 2>&1
nc10@your-5554c55be4 ~
$ cat log3.txt
ls: 无法访问 llllllll: No such file or directory
page1.html
nc10@your-5554c55be4 ~
$ ls llllllll page1.html &> log4.txt
nc10@your-5554c55be4 ~
$ cat log4.txt
ls: 无法访问 llllllll: No such file or directory
page1.html
nc10@your-5554c55be4 ~
$
1 是 STDOUT, 2 是 STDERR, 2>&1 就是 STDOUT 和 STDERR
同导向到同一文件里, 例
nc10@your-5554c55be4 ~
$ ls llllllll
ls: 无法访问 llllllll: No such file or directory
nc10@your-5554c55be4 ~
$ ls llllllll 2> log.txt
nc10@your-5554c55be4 ~
$ ls page1.html > log2.txt
nc10@your-5554c55be4 ~
$ cat log.txt log2.txt
ls: 无法访问 llllllll: No such file or directory
page1.html
nc10@your-5554c55be4 ~
$ ls llllllll page1.html > log3.txt 2>&1
nc10@your-5554c55be4 ~
$ cat log3.txt
ls: 无法访问 llllllll: No such file or directory
page1.html
nc10@your-5554c55be4 ~
$ ls llllllll page1.html &> log4.txt
nc10@your-5554c55be4 ~
$ cat log4.txt
ls: 无法访问 llllllll: No such file or directory
page1.html
nc10@your-5554c55be4 ~
$
>>这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响,另外你是感兴趣的话可以看下刘遄老师写的《Linux就该这么学》作为入门的书籍,觉得不错的话采纳下哦~
"
1> 没见过
2> 重定向 标准错误输出