I/O 重定向

文件描述符
默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and stderr (错误消息输出到屏幕上)。 这3个文件和其他打开的文件都可以被重定向。 对于重定向简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者甚至是脚本中的代码块的输出, 然后将这些输出作为输入发送到另一个文件, 命令, 程序, 或脚本中每个打开的文件都会被分配一个文件描述符。stdin, stdout, 和stderr的文件描述符分别是0, 1, 和 2。 对于正在打开的额外文件, 保留了描述符3到9。 在某些时候将这些格外的文件描述符分配给stdin, stdout, 或者是stderr作为临时的副本链接是非常有用的。在经过复杂的重定向和刷新之后需要把它们恢复成正常的样子。

COMMAND_OUTPUT >
   # 重定向stdout到一个文件.
   # 如果没有这个文件就创建, 否则就覆盖.
> filename   
   # > 会把文件"filename"截断为0长度.
   # 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同)
COMMAND_OUTPUT >>
   # 重定向stdout到一个文件.
   # 如果文件不存在, 那么就创建它, 如果存在, 那么就追加到文件后边.

1>filename
   # 重定向stdout到文件"filename".
1>>filename
   # 重定向并追加stdout到文件"filename".
2>filename
   # 重定向stderr到文件"filename".
2>>filename
   # 重定向并追加stderr到文件"filename".
&>filename
   # 将stdout和stderr都重定向到文件"filename".

2>&1
   # 重定向stderr到stdout.
   # 得到的错误消息与stdout一样, 发送到一个地方

i>&j
   # 重定向文件描述符i 到 j.
   # 指向i文件的所有输出都发送到j中去.

>&j
   # 默认的, 重定向文件描述符1(stdout)到 j.
   # 所有传递到stdout的输出都送到j中去.

0< FILENAME
< FILENAME
   # 从文件中接受输入.
   # 与">"是成对命令, 并且通常都是结合使用. 
关闭文件描述符
n<&- 关闭输入文件描述符n.
0<&-, <&- 关闭stdin.
n>&- 关闭输出文件描述符n.
1>&-, >&- 关闭stdout.

猜你喜欢

转载自zccst.iteye.com/blog/1335275