Bash
將所有 bash 腳本輸出(從腳本內部)重定向到兩個文件:一個追加,一個重寫;但將輸出丟棄到控制台
exec
我可以輕鬆地將 bash 腳本的標準輸出和錯誤輸出重定向到文件,同時使用簡單的語句將輸出丟棄到控制台:exec &>>/var/log/backup.log
但是我如何使用
exec
寫入兩個文件,附加到第一個文件並重寫第二個文件?tee
可能應該使用一些魔法。還應該找到一些使控制台靜音的方法。原因是我的備份腳本。我想將最新備份的事件附加到主日誌中,並且只將這些事件寫入目前備份日誌(清除其以前的內容),每個備份會話都應該重寫。
可以做到,需要流程替換。將流重定向到一個子程序中,該子程序呼叫
tee
並將其餘部分重定向到覆蓋的文件中。exec &> >(tee -a backup.log > overwritten.log)
請注意,這只會在整個腳本中覆蓋文件一次,因為流保持打開狀態,直到腳本退出或建立另一個重定向。