Linux 标准输出重定向 2>&1 , 1>&2
1.在linux中,最常使用的 FD (file descriptor) 大概有三个, 分别是:
- 0 是一个文件描述符,表示标准输入(stdin)
- 1 是一个文件描述符,表示标准输出(stdout)
- 2 是一个文件描述符,表示标准错误(stderr)
1.1.在标准情况下, 这些FD分别跟如下设备关联:
- stdin(0): keyboard 键盘输入,并返回在前端
- stdout(1): monitor 正确返回值 输出到前端
- stderr(2): monitor 错误返回值 输出到前端
1.2.可以通过下面的方法改变输出的FD:
1>&2
正确返回值传递给2输出通道 &2表示2输出通道,如果此处错写成 1>2, 就表示把1输出重定向到文件2中.2>&1
错误返回值传递给1输出通道, 同样&1表示1输出通道.
2.符号">" 和 "&"说明:
2.1>
是重定向符,就是把前面输出的内容重定向到后面指定的位置。例:
echo "abc" > test.txt
:把abc输入到test.txt文档中
>
前是可以加数字来说明把什么内容重定向到文件中,默认是把标准输出重定向到文件中,所以下面这个例子和上面那个是一样的:
echo "abc" 1> test.txt
2.2&
是一个描述符,如果1或2前不加&,会被当成一个普通文件:
1>&2
意思是把标准输出重定向到标准错误.2>&1
意思是把标准错误输出重定向到标准输出。&>filename
意思是把标准输出和标准错误输出都重定向到文件filename中