http://reeddeer.blog.163.com/blog/static/1181710402012324114242650/


文件描述符 文件描述符是程序发送输出和获取输入的地方。当执行一个程序时,运行该程序的进程打开了3个文件描述符,分别是:0(标准输入)1(标准输出)和2(标准错误输出)。重定向输出符号(>)是1>的简写,它通知shell重定向标准输出。类似地,<0<的简写,表示重定向标准输入。符号2>将重定向标准错误输出。


示例解释:

$ cat y
message y
$ cat x
cat: x: No such file or directory
$ cat x y
cat: x: No such file or directory
message y.


下面的示例将标准输出和标准错误输出重定向到不同的文件中。符号2>告诉shell将标准错误输出(文件描述符为2)重定向到的具体位置。1>告诉shell将标准输出(文件描述符为1)重定向到的具体位置。可以使用>代替1>。

$ cat x 1> holdl 2> ho1d2
$ cat holdl
message y.
$ cat ho1d2
cat: x: No such file or directory



复制文件描述符 在下一个示例中,1>将标准输出重定向到文件hold。然后,2>&1声明文件描述符2为文件描述符1的副本。这样做的结果是,标准输出和标准错误输出均被重定向到文件hold中。

$ cat x y 1> hold 2>&1
$ cat hold
cat: x: No such file or directory
message y



发送错误到标准错误输出 还可以使用1>&2将命令的标准输出重定向到标准错误输出。shell脚本中经常使用这项技术将echo的输出发送到标准错误输出。在下面的脚本中,第1个echo命令的标准输出被重定向到标准错误输出:

echo This is an error message 1>&2