电脑技术学习

对话 UNIX: !$#@*%

dn001

  清单 3 给出前两个重定向的输出。

  清单 3. 重定向的输出

# cat ps_out
  root 196718 151674  0 11:00:27   - 0:00 /usr/sbin/rpc.mountd
 daemon 225402 151674  0 11:00:27   - 0:00 /usr/sbin/rpc.statd
  root 229498 151674  0 11:00:27   - 0:00 /usr/sbin/rpc.lockd
  root 340144 168018  0 12:34:56   - 0:00 rpc.ttdbserver 100083 1
cormany 409708 569522  0 19:29:27 pts/1 0:00 -ksh
cormany 733202 409708  0 19:52:20 pts/1 0:00 grep -E rpc|ksh
PID for process /usr/sbin/rpc.statd is greater than 200000
PID for process /usr/sbin/rpc.lockd is greater than 200000
PID for process -ksh is greater than 200000

  当只使用 > 重定向输出时,只重定向命令的 stdout。但是,除了 stdout,还有 stderr 输出:前者表示为 1,后者表示为 2。在 Unix 中输出重定向没有区别。只需在 > 前面加上所需的输出类型(例如,1>、2>),告诉 shell 要把输出路由到哪里。

  清单 4 尝试列出 fileA.tar.bz2 和 fileC.tar.bz2。但是,如第一个命令(ls)所示,fileC.tar.bz2 不存在。好在可以把 stdout 和 stderr 分别重定向到 ls.out 和 ls.err,这样就能够看到错误消息。

  清单 4. 列出文件 fileA.tar.bz2 和 fileC.tar.bz2

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

标签: