tee 從標準輸入讀取資料,**同時**輸出到標準輸出 (螢幕) 與一個或多個檔案,是管線處理中「分流」資料的關鍵工具。
tee [選項]... [檔案]...
| 選項 | 說明 |
|---|---|
-a, --append | **附加**模式:資料寫入檔案末尾,不覆蓋原內容。 |
-i, --ignore-interrupts | 忽略中斷訊號 (SIGINT)。 |
-p | 診斷寫入非管線輸出的錯誤 (預設)。 |
--output-error[=MODE] | 控制寫入錯誤行為:warn (預設)、exit、exit-nopipe。 |
grep -r -i -E "sss|aaa" ./ | grep -v ./doc/ | tee -a log.txt
解析:
grep -r:遞迴搜尋子目錄。-i:忽略大小寫。-E:使用擴充正則表達式 (此處為「sss」或「aaa」)。grep -v ./doc/:排除 ./doc/ 目錄下的結果。tee -a log.txt:將過濾後的結果**同時**顯示在螢幕上,並**附加**寫入 log.txt (不覆蓋)。command | tee file1.txt file2.txt file3.txt 同時寫入多個檔案。echo "new config" | sudo tee /etc/sysctl.d/99-custom.conf (因重導向 > 不支援 sudo,tee 可繞過)。command | tee output.log > /dev/null。tee 讓「看得到過程、留得下結果」成為可能,是 Shell 腳本除錯、日誌記錄、多重備份的標準作法。