linux文件描述符和重定向

发布时间:2016-12-10 12:59:40 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"linux文件描述符和重定向",主要涉及到linux文件描述符和重定向方面的内容,对于linux文件描述符和重定向感兴趣的同学可以参考一下。

常见的文件描述符有stdin、stdout、stderr。他们是与文件输入输出相关联的整数。由系统预留其对关联关系有: 0-----stdin(标准输入) 1-----stdout(标准输出) 2-----stderr(标准错误) 当我们在字符界面下使用命令,当命令运行出错时,一般会在界面显示,但当执行shell脚本时,我们一般不希望将错误显示在界面中,一般是将其重定项到其他文件中,如日子文件,就是最好的记录shell执行过程信息。 当我们使用ls +时,由语法格式错误,界面会给出出错提示: 刚开始学习时碰到一个郁闷的问题,就是希望将错误信息重定向打印在日志文件中,于是弄了个重定向符上去,如:ls + >>test_log,以为会将错误信息打入到test_log文件中,于是满心欢喜的跑了一下,实际结果倒是: 结果依然呐,固执得很,由于刚学习嘛,对单纯的想法也不能太苛刻了,但是还是想要解决的,于是励志学好重定向,当了解到了这三种描述符,发现,事情原来就是那么简单,将命令改改就ok了,改成ls + 2>>test_log,跑起来非常顺畅。注意2,这就是标准错误描述符,由于系统默认是标准输出,故:ls + >>test_log无法将错误打入日子中,该语法还原格式为:ls + 1>>test_log 在学习时还捡了一点其他知识,就是命令执行后的结果状态信息,很简单,无非就是成功和不成功嘛。这个状态值非常有用,至少我发现在shell脚本中运行时要打印状态信息时,这个值用来做逻辑判断实在是太幸福了。(解释:当命令执行成功是结果状态值是0,非0则表示执行失败,用变量$?来获得当前结果状态值) 如在实现文件复制时,判断该复制是否成功了的判断语句实现起来就比较简单了,在判断中将信息定向到结果日志中,如下简单语句: cp -f $OldFilePath/test1 $NewFilePath/test1 2>>$Testlog/log_txt #若是执行失败,则将错误重定向到日子文件中去 if [ $? -e 0 ] then time_now_2=`date +%Y-%m-%d" "%H:%M:%S` echo $time_now_2 '替换完成'>>$Testlog/log_txt else time_now_2=`date +%Y-%m-%d" "%H:%M:%S` echo $time_now_2 '替换失败'>>$Testlog/log_txt

上一篇:Django学习记录(三)
下一篇:32位linux(centos)下mongoDB的安装

相关文章

相关评论