Shell
如何將 stdout 重定向到一個文件,並將 stdout+stderr 重定向到另一個文件?
我怎樣才能實現
cmd >> file1 2>&1 1>>file2
也就是說,stdout和stderr 應該重定向到一個文件(file1),並且只有 stdout(file2)應該重定向到另一個(都處於附加模式)?
問題是,當您重定向輸出時,它不再可用於下一次重定向。您可以通過管道傳遞到
tee
子shell 以保留第二次重定向的輸出:( cmd | tee -a file2 ) >> file1 2>&1
或者如果您想在終端中查看輸出:
( cmd | tee -a file2 ) 2>&1 | tee -a file1
為避免將第一個的 stderr 添加
tee
到file1
,您應該將命令的 stderr 重定向到某個文件描述符(例如 3),然後再次將其添加到 stdout:( 2>&3 cmd | tee -a file2 ) >> file1 3>&1 # or ( 2>&3 cmd | tee -a file2 ) 3>&1 | tee -a file1
(感謝@fra-san)