將標準輸出重定向到一個文件的同時並在屏幕上顯示


一、標準輸出+標準錯誤

輸出標準輸出和標準錯誤,同時保存到文件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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章