Io-Redirection

管道沒有拾取標準輸出

  • October 2, 2013

我正在從OS X 10.8bash 終端執行一個 java 程序,並試圖重新定向它產生的輸出。

但是,當通過管道執行此命令或將其重新定向到文件時,輸出為空白,但是我在終端中看到了輸出。

為了說明這一點:

> java program.java
13/10/02 14:18:30 WARN some
13/10/02 14:18:30 INFO log
13/10/02 14:18:30 INFO messages
...

> java program.java > log
> cat log
>

是否可以設置 java 程序,使其寫入另一個流而不是stdout,但仍然在終端中產生輸出的流。這樣的事情可能嗎?

每個程序打開三個標准文件,stdin(標準輸入)、stdout(標準輸出)和stderr(標準錯誤)。寫入兩者stdoutstderr預設在終端中輸出。

寫入錯誤和日誌消息是一種常見的約定,stderr而不是stdout為了不將日誌或錯誤消息與實際程序輸出混合。stderr您可以使用重定向2>,例如:

command 2> log

引用自:https://unix.stackexchange.com/questions/93277