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里是不能工作的。
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里是不能工作的。
相关文章推荐
- Linux socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区