曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4307|回复: 0
打印 上一主题 下一主题

重定向输出

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2008-12-27 11:13:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-6-2 20:36 , Processed in 0.061679 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表