《Linux命令行与shell脚本编程大全》 第十四章 学习笔记
文件描述符缩写描述0STDIN标准输入1STDOUT标准输出2STDERR标准错误
?
1.STDIN
代表标准输入。对于终端界面来说,标准输入是键盘
使用输入重定向符号(<)时,Linux会用重定向指定的文件来替换标准输入文件描述符
2.STDOUT
代表标准输出。对于终端界面来说,标准输出是屏幕
3.STDERR
代表标准错误输出。默认情况下,STDOUT文件描述符和STDERR文件描述符指向同样的地方,即显示器。
重定向STDOUT并不会自动重定向STDERR
?
重定向错误 & 重定向错误和错误数据
在使用重定向符号时定义STDERR文件描述符就可以重定向错误输出。
在重定向符号后面加上and符号以及文件描述符即可
这样就将上面的log输出到标准错误中(当然,还是黑字不是红字)
永久重定向
用exec命令告诉shell脚本执行期间重定向某个文件描述符
注意:上面即使把STDOUT重定向了,依然可以将echo重定向到STDERR
在脚本中重定向输入
同上面一模一样,只是文件描述符换成了3-8
重定向文件描述符
将已经重定向的文件描述符恢复:
比如我们要恢复标准输出,基本的思路就是,使用一个文件描述符定向到标准输出,然后再把标准输出定向到其他地方,比如文件。当想把标准输出重定向回来的时候,只需将他重定向到之前使用的文件描述符那里即可。
其中的test.txt为
执行后结果:
列描述COMMAND正在运行的命令名的前9个字符PID进程的PIDUSER进程属主的登录名FD文件描述符数目以及访问类型(r=读,w=写,u=读写)TYPE文件的类型(CHR=字符型,BLK=块型,DIR=目录,REG=常规文件)DEVICE设备的设备号(主设备号和从设备号)SIZE文件大小(如果有的话)NODE本地文件的节点数NAME文件名与STDIN、STDOUT和STDERR关联的文件类型是字符型。因为STDIN、STDOUT和STDERR文件描述符都指向终端,所以输出文件的名称就是终端的设备名。所有3种标准文件都支持读和写。
$ date | tee test.txt2013年 08月 21日 星期三 21:12:28 CST$ cat test.txt2013年 08月 21日 星期三 21:12:28 CSTtee默认会覆盖指定文件中的内容,如果想追加,那么要使用-a选项
?
1.第十五章:标准I/O:重定向和管道
?
转贴请保留以下链接
本人blog地址
http://su1216.iteye.com/
http://blog.csdn.net/su1216/