Linux

如何使用管道將標準錯誤發送到標準輸出到另一個命令?

  • October 5, 2011

我正在嘗試擷取建構操作的所有輸出,並將其發送到myprogram. 我似乎只能捕捉到它的一部分。這就是我正在嘗試的:

make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" | myprogram &2 > 1

我也試過:

make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" &2 > 1 | myprogram

基本上我想把所有東西都發送到stdout然後用它做點什麼。目前我只擷取部分輸出,另一部分進入螢幕。如何將所有內容通過管道傳輸到另一個程序?

由於您有兩個命令,因此最好使用:

{ make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64"; } 2>&1 | myprogram

要麼

( make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" ) 2>&1 | myprogram

make clean不是將其輸出定向到管道,您將希望使用上述兩種方法中的任何一種來讓 shell 將兩個呼叫的輸出重定向為make一個。

您需要將所有命令的 STDERR 重定向到 STDOUT。然後,您可以將其全部導入myprogram.

( make clean 2>&1 && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" 2>&1 ) | myprogram

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