2008-11-25 51 views
10

我試圖將java編譯器輸出重定向到一個文件。 我認爲它應該是:試圖在bash shell中捕獲javac輸出

javac file.java > log.txt 

什麼的。相反,我看到終端上的所有輸出,而log.txt中什麼都沒有!

另外,如果我想記錄錯誤太多,我該怎麼辦

javac file.java 2>&1 > log.txt 

回答

13
javac file.java 2> log.txt 

的原因是,你有輸出文件描述符,而不是一個。通常是stdout,您可以使用>重定向,它應該用於結果輸出。第二個stderr是用於人類可讀的輸出,如警告,錯誤,當前狀態等,這個被重定向到2>。

您的第二行使用2> & 1,將stderr重定向到stdout,最後將stdout重定向到log.txt。

+0

我看到重定向stderr給我輸出我想要的。爲什麼一切都記錄在標準錯誤,沒有標準輸出?另外,你能告訴我爲什麼javac file.java 2>&1> log.txt不起作用嗎? – jcee14 2008-11-25 15:48:41

7

你試過

javac -Xstdout log.txt file.java 

這將發送編譯器錯誤日誌文件,而不是stderr。