2
我想有一個日誌文件merged.log
它存儲完整的程序輸出(標準輸出和標準錯誤),所以我可以看到錯誤日誌旁邊的非錯誤日誌,但也有一個文件error.log
僅適用於錯誤行,所以我可以快速查看問題該程序。我曾嘗試使用tee
,但我無法弄清楚如何執行這種特定類型的重定向。如何將程序的stdout和stderr重定向到一個文件,並將同一個stderr重定向到另一個文件?
舉例來說,如果我有以下的JavaScript程序
// outputter.js
console.log('this is stdout');
console.error('this is stderr');
那麼這兩個日誌文件應該是
# merged.log
this is stdout
this is stderr
和
# error.log
this is stderr
這將保留'stderr'和'stdout'上的消息的原始順序嗎?例如,如果你用'(ls。nonexistent; ls。nonexistent)'替換'./a.out',那就應該交織正常和錯誤輸出。如果您提到有關訂購的限制,您的答案可能是可以接受的。 – janos
@janos我運行了你的建議命令,它正確地交錯stdout和stderr輸出 – almel
@roger你的命令按預期工作,但經過一番搗鼓之後,我發現如果我在最後一個括號之前刪除了'1&2',我仍然在兩個日誌文件中獲得預期的輸出。爲什麼有必要將fd 1重定向到2? – almel