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