您的位置:首页 > 运维架构 > Shell

linux 标准输出、标准错误输出、以及shell小技巧

2015-10-18 14:47 483 查看
1.Linux常用的有:

1)  标准输入 stdin  代码为0,使用< 或<<

2)  标准输出 stdout 代码为1,使用> 或 >> ,这里把1给省略了,

3)  标准错误输出 stderr代码为2,使用 2> 或2>>

其中:标准输出指的是『命令运行所回传的正确的信息』,而标准错误输出可理解为『命令运行失败后,所回传的错误信息』

 

2.如果想让信息都不展示,则将输入到黑洞垃圾桶/dev/null,不输出错误信息2>/dev/null

3.标准输出标准错误输出都放在同一个文件,就这样做:

1)都重定向到标准输出通道&1:2>&1,都重定向到标准错误输出通道1>&2,可以简写为>&2,这里的&可以理解成”the same
as”

 z

4.小小tips

为啥经常在linux的shell脚本会看见echo “hello” >&2,这样的写法?

这是linux shell脚本的一个小技巧,unix有一个哲学,“Rule of silence”,一个好脚本的输出不应该太啰嗦,不然不利于和其他程序协作,但很多情况我们又希望看到脚本的执行进度。处理这个问题的一个方法就是把进度写到stderr中,这样既不会影响标准输出、和其他程序的协作,同时我们在屏幕又可以看到脚本的相关进度信息,如:

备注我们有a.txt 但是没有b.txt文件,在屏幕打印的日志如下,实在不懂,就自己打印试试。

ls a.txt b.txt >&2

ls: b.txt: No such file or directory

a.      Txt

 

很多不是脚本的应用也会采用这种方式,比如执行java -version,输出的信息是到stderr,而不是stdout。

另外提醒一下,这种技巧主要用在Bourne系列的Shell,在csh或者tcsh里是不能工作的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息