您的位置:首页 > 其它

将标准输出重定向到一个文件的同时并在屏幕上显示

2014-04-22 17:37 961 查看
一、标准输出+标准错误
输出标准输出和标准错误,同时保存到文件logfile
方法一: <command> 2>&1 | tee <logfile>

[root@home root]# id das 2>&1 |tee logfile

id: das: No such user

[root@home root]# cat logfile

id: das: No such user

注释:管道的作用为把一个进程的标准输出作为另一个进程的标准输入。2>&1是把标准错误重定向到标准输出的副本一起输出。上面的命令,把标准输出和标准错误都输出作为tee命令的标准输入,tee的作用为把标准输入的内容拷贝到文件,并输出。

方法二:<command> 2> logfile | cat - logfile

[root@home root]# id abc 2>&1 |tee logfile

id: abc: No such user

[root@home root]# cat logfile

id: abc: No such user

注释:cat可以带多个文件参数,同时显示多个文件的内容。

"-"代表标准输入,logfile是管道前保存的标准错误文本。

二:忽略标准输出
若想忽略标准输出,只输出标准错误并保存到文件logfile 。
命令如下:<command> 2>&1 >/dev/null | tee logfile

注释:1. 2>&1 将标准错误重定向到标准输出,注意,此时标准输出还没有被重定向

2. >/dev/null 等同于1>/dev/null 。 /dev/null文件是一个空设备,类似于windows内的回收站,使用>/dev/null(等同于1>/dev/null)将标准输出重定向到/dev/null,即不显示标准输出的内容。所以这时的标准输出就仅变为重定向过来的标准错误了。

相反,如果两者颠倒顺序,那标准输出连同它的副本都会被重定向到/dev/null,这是一个逻辑问题。

[root@home root]# make >/dev/null 2>&1

[root@home root]# make 2>&1 >/dev/null

make: *** No targets specified and no makefile found. Stop.

原贴参考:http://www.linuxsir.org/bbs/printthread.php?t=100726&pp=15
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐