曲径通幽论坛

标题: 重定向输出 [打印本页]

作者: beyes    时间: 2008-12-27 11:13
标题: 重定向输出
ls -l > lsouput.txt

如果不需要再次的重定向输出覆盖掉 lsouput.txt ,那么先使用:
set -o noclobber

之后,当再次重定向要输出到 lsouput.txt 这个文件时,系统会提示:
bash: lsoutput.txt: cannot overwrite existing file

注意,这只是对当前 shell 的设定有用,若重新开启另外一个 shell 则之前用 set -o noclobber 命令的限制无效。

如果要取消(在之前用 set 命令的 shell 里)不能覆盖的限制,可以:
set -C
set +o noclobber

经过 set -o noclobber 设置后虽然不能覆盖原文件,但是可以在文件后面进行附加内容,如:
ls -l / >> lsoutput.txt

假如不希望命令操作的错误信息输出到屏幕,且要把这些错误信息重定向写到一个文件中,可以:
kill -HUP 1234 2>killerr.txt
上面,假设进程 1234 是不存在的,自然无法被 kill 掉,如果没用 2>killerr.txt 那么错误信息就会出现在屏幕上,反之用了之后错误信息就不会显示在屏幕上,而是写到 killerr.txt 中。其中 2 是标准错误的文件描述符(file descriptor)

如果希望一般的输出信息和错误信息都重定向到同一个文件中,则可以:
kill -1 1234 >killerr.txt 2&>1





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2