2011-09-23 22 views
234

我運行bash腳本,該命令如何stdout和標準錯誤重定向到文件

我用的執行創建日誌文件中的以下

Command1 >> log_file 
Command2 >> log_file 

這隻能發送標準輸出,而不是終端上出現的標準錯誤。

我可以記錄記錄到文件的stderr和stdout嗎?

回答

349

如果你想登錄到同一文件:

command1 >> log_file 2>&1 

如果您想要不同的文件:

command1 >> log_file 2>> err_file 
+98

而只是爲了節省其他人感到沮喪,請注意順序非常重要:'2>&1'需要在'>> log_file'之後發生。 – Rufflewind

+4

爲什麼是'>>而不是'>'? – user3527975

+5

'>>'追加到文件,'>'覆蓋。搜索「shell重定向」瞭解更多詳情。 – Mat

26

你可以這樣說,這2> & 1:

command > file 2>&1 
+12

+1,'2>&1'重定向文件描述符2(錯誤)到文件描述符1(標準輸出) – Sjoerd

4

用途:

command >>log_file 2>>log_file 
159

重定向兩個最簡單的語法是:

command &> logfile 

如果要追加到文件,而不是覆蓋:

command &>> logfile 
+3

不知道何時添加了此運算符,但它可能不適用於舊版本的Bash。它似乎在我的機器上運行Gnu bash v3.2.48。 –

+7

@CostiCiudatu&>>操作符似乎不適用於Mac OS X;更安全地使用Mat的解決方案。 –

+4

@JamesFennell你說得對,我沒有意識到這一點。我upvoted公認的答案:) –

1

請使用command 2>file 這裏2代表的文件描述符stderr。您還可以使用1代替2使標準輸出被重定向到「文件」

相關問題