2011-10-26 16 views

回答

217

只需添加他們一行command 2>> error 1>> output

但是,請注意>>是附加在文件已經有數據。而>將覆蓋文件中的任何現有數據。

所以,command 2> error 1> output如果你不想追加。

只是爲了完成,您可以將1>寫爲>,因爲默認文件描述符是輸出。所以1>>是一樣的東西。

所以,command 2> error 1> output變,command 2> error > output

+1

很好的答案!我真的很喜歡你的解釋,說明'1>'可以寫成''' – user784637

+0

這與'command&2> err.log'有什麼不同,我認爲我完全混淆了sintaxies。 (鏈接到所有bash管道的適當答案可能是按順序) – ThorSummoner

+4

@ThorSummoner http://www.tldp.org/LDP/abs/html/io-redirection。HTML是我認爲你正在尋找的東西。 Fwiw,看起來像'command&2> err.log'並不完全合法 - 該語法中的和號用於文件描述符作爲目標,例如'command 1>&2'會將stdout重新路由到stderr。 – DreadPirateShawn

9

就像是:

$ command >>output 2>>error 
11

如果你喜歡在一個單一的文件混合輸出(標準輸出&標準錯誤),你可能要使用:

command > merged-output.txt 2>&1 
+22

這更簡單,因爲「command> merged-output.txt」 –

+21

這不是問題的答案。 – Matthias

9

試試這個:

your_command 2>stderr.log 1>stdout.log 

更多信息

中的數字0通過9文件描述符在bash0代表標準輸入,1代表標準輸出,2代表標準錯誤。 39是用於任何其他臨時使用。

任何文件描述符都可以使用運算符>重定向到文件或另一個文件描述符。您可以改爲使用運算符>>追加到文件而不是創建一個空文件。

用法:

類file_descriptor >

類file_descriptor > & 類file_descriptor

請參考http://www.tldp.org/LDP/abs/html/io-redirection.html

+3

之前的評論不再相關,因爲答案已經根本改變了(爲了更好)。現在討論如何獨立重定向輸出,這很有用。 – Dom

相關問題