Linux
如何使用管道將標準錯誤發送到標準輸出到另一個命令?
我正在嘗試擷取建構操作的所有輸出,並將其發送到
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