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里是不能工作的。