shell 中最常使用的 FD (file descriptor)

在 shell 程式中,最常使用的 FD (file descriptor) 大概有三个, 分别是:

0 是一个文件描述符,表示标准输入(stdin)
是一个文件描述符,表示标准输出(stdout)

是一个文件描述符,表示标准错误(stderr)

一般来说, "1>" 通常可以省略成 ">". 
有了这些认识才能理解 "1>&2" 和 "2>&1". 
1>&2 正确返回值传递给2输出通道 &2表示2输出通道 
如果此处错写成 1>2, 就表示把1输出重定向到文件2中. 
2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道.

& 是一个描述符,如果1或2前不加&,会被当成一个普通文件。

1>&2 意思是把标准输出重定向到标准错误.

2>&1 意思是把标准错误输出重定向到标准输出。

&>filename 意思是把标准输出和标准错误输出都重定向到文件filename

我们再看一个例子:

1
2
3
lsnodir 1> filename.txt 2>&1
catfilename.txt
ls: nodir: No such fileor directory

上面例子把 标准输出 重定向到文件 filename.txt,然后把 标准错误 重定向到 标准输出

所以最后的错误信息也通过标准输出写入到了文件中,比较例3,4,5,就能明白其作用。

原文地址:https://www.cnblogs.com/cangqiongbingchen/p/6434211.html