2009年5月12日 星期二

linux 指令 - tee

這是一個非常好用的指令,當我們在用命令重導向時,會把原本要顯示到螢幕上的資料轉儲到檔案中,例: $ 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?

沒有留言: