Bash
如何將 stderr 和 stdout 重定向到不同的文件並在終端中顯示?
我想在終端中查看命令的輸出,就好像沒有重定向一樣。此外,stderr 需要重定向到 err.log,stdout 需要重定向到 stdout.log。
最好在一個單獨的文件 stdouterr.log 中也有終端中顯示的內容的精確副本,即錯誤發生時列印的錯誤。
使用
tee
命令如下:(cmd | tee stdout.log) 3>&1 1>&2 2>&3 | tee stderr.log
3>&1 1>&2 2>&3
是你如何交換標準錯誤和標準輸出,因為 tee 只能接受標準輸出。查看Unix tee 命令,了解使用
tee
.
我認為將 stdout 和 stderr 記錄到兩個不同的文件是一個絕妙的主意。它不會使日誌非同步嗎?所以我嘗試了以下方法:
- 標準輸出到“stdout.log”(如 dogbane 建議的那樣)
- stderror 到“stderr.log”(如 dogbane 建議的那樣)
- 所有輸出到“all.log”和
- 仍然能夠在顯示器上看到輸出(儘管在單獨的終端中!)
((cmd | tee stdout.log) 3>&1 1>&2 2>&3 | tee stderr.log) &> all.log
在另一個終端
tail -f --sleep-interval=2 all.log