电脑技术学习

对话 UNIX: !$#@*%

dn001

  在 AIX 中,对 stdout 和 stderr 使用 > 和 >> 时应用相同的规则。例如,以后的测试可以使用相同的输出文件,见 清单 5。

  清单 5. 使用输出文件进行以后的测试

# ls fileB.tar.bz2 fileD.tar.bz2 1>> ls.out 2>> ls.err
# cat ls.out
fileA.tar.bz2
fileB.tar.bz2
# cat ls.err
ls: 0653-341 The file fileC.tar.bz2 does not exist.
ls: 0653-341 The file fileD.tar.bz2 does not exist.

  有时候,可能需要把 stdout 和 stderr 写到同一个文件或设备。这有两种方法。第一种方法是把 1> 和 2> 重定向到同一个文件:

# ls fileA.tar.bz2 fileC.tar.bz2 1> ls.out 2> ls.out
# cat ls.out
fileA.tar.bz2
ls: 0653-341 The file fileC.tar.bz2 does not exist.

  第二个方法更简单更快速,有经验的 Unix 用户更喜欢采用这种方法:

# ls fileA.tar.bz2 fileC.tar.bz2 > ls.out 2>&1
# cat ls.out
fileA.tar.bz2
ls: 0653-341 The file fileC.tar.bz2 does not exist.

  我们分解这个语句。首先,执行 ls fileA.tar.bz2 fileC.tar.bz2。然后使用 > ls.out 把 stdout 重定向到 ls.out,使用 2>&1 把 stderr 重定向到前面重定向的 stdout(ls.out)。

  请记住,可以把输出重定向到文件和其他设备。可以把数据重定向到打印机、软盘、终端类型(TTY)以及各种其他设备。例如,如果希望把一个消息发送给所有会话(或 TTY)上的某个用户,那么只需循环处理 who 并把一个消息重定向到 TTY(如果您有足够的权限的话),见 清单 6。

标签: