這是一個非常好用的指令,當我們在用命令重導向時,會把原本要顯示到螢幕上的資料轉儲到檔案中,例:
$ whoami
ren
若我們把要顯示到螢幕上的結果導到檔案中
$ whoami > whoami.file
那麼螢幕上不會有任何顯示,而且,此時會多出一個檔案,whoami.file
那麼要如何同時把結果存到檔案中,又可以顯示在螢幕上哩,這個時候就要用到tee這一個指令
$ whoami | tee whoami.file
那如果要把要顯示在螢幕上的再分析一次哩,那請用
$ whoami | tee whoami.file | 分析指令
[2009.05.20 補充]
那麼要如何同時把錯誤顯示在螢幕上, 又可以導到檔案中哩...
$ make xyz 2>&1 | tee xyz.log
先看下面這一個例子吧~
$ find /home -name .bashrc > list.file 2>&1
是表示說把正確的訊息與錯誤的訊息寫到同一個檔案中, 也就是list.file這一個檔案啦~
也就是說&1表示的就是前一個導向的檔案
因為,平常的訊息若沒有特別設定的話,是導到stdout,也因此,
$ make xyz 2>&1 | tee xyz.log
&1所代表是前一個的導向檔案,所以目前的&1是代表stdout,所以,此時stdout會有正確與錯誤訊息, 再用tee把stdout導到檔案中, 所以檔案中就會有正確與錯誤的訊息啦
也可以用以下指令代替
$ make xyz 2>/dev/stdout | tee xyz.log
[2010.01.22 補充]
這裡是說,如何把stdout(正確的訊息)與errout(錯誤的訊息)同時傳送到一個檔案中
以下是把nmake的產出訊息全部傳送到message.txt中
$ nmake > message.txt 2>&1
也可以使用以下方式,不過,以下方式在windows下似乎沒有辦法使用~
$ nmake &> message.txt
參考資料:
鳥哥的私房菜
How to use tee with stdout and stderr?
沒有留言:
張貼留言