Bash
使用 exec 和 tee 將日誌同時重定向到標準輸出和日誌文件
在 bash 腳本中,如何使用 將所有標準輸出重定向到日誌文件和
tee
螢幕上的輸出exec
?log_file="$HOME/logs/install.txt-`date +'%Y-%m-%d_%H-%M-%S'`" [ -f "$log_file" ] || touch "$log_file" exec 1>> $log_file 2>&1
此程式碼將所有日誌重定向到日誌文件而不是螢幕。
exec &> >(tee -a "$log_file") echo "This will be logged to the file and to the screen"
$log_file
將包含腳本和任何子流程的輸出,並且輸出也將列印到螢幕上。
>(...)
啟動程序...
並返回一個代表其標準輸入的文件。exec &> ...
將標準輸出和標準錯誤都重定向到...
腳本的其餘部分(僅exec > ...
用於標準輸出)。tee -a
將其標準輸入附加到文件中,並將其列印到螢幕上。