作者 | Himanshu Arora
譯者 | ChenYi (cyleft) ? ? ? 共計翻譯:22 篇 貢獻時間:68 天
有時候,你會想手動跟蹤命令的輸出內容,同時又想將輸出的內容寫入檔案,確保之後可以用來參考。如果你想尋找這相關的工具,那麼恭喜你,Linux 已經有了一個叫做 tee
的命令可以幫助你。
本教程中,我們將基於 tee
命令,用一些簡單的例子開始討論。但是在此之前,值得一提的是,本文我們所有的測試實體都基於 Ubuntu 16.04 LTS。
Linux tee 命令
tee
命令基於標準輸入讀取資料,標準輸出或檔案寫入資料。感受下這個命令的語法:
tee [OPTION]... [FILE]...
這裡是說明檔案的說明:
從標準輸入中複製到每一個檔案,並輸出到標準輸出。
讓 Q&A;(問&答)風格的實體給我們帶來更多靈感,深入瞭解這個命令。
Q1、 如何在 Linux 上使用這個命令?
假設因為某些原因,你正在使用 ping
命令。
ping google.com
如何在 Linux 上使用 tee 命令
然後同時,你想要輸出的資訊也同時能寫入檔案。這個時候,tee
命令就有其用武之地了。
ping google.com | tee output.txt
下麵的截圖展示了這個輸出內容不僅被寫入 output.txt
檔案,也被顯示在標準輸出中。
tee command 輸出
如此應當明白了 tee
的基礎用法。
Q2、 如何確保 tee 命令追加資訊到檔案中?
預設情況下,在同一個檔案下再次使用 tee
命令會改寫之前的資訊。如果你想的話,可以透過 -a
命令選項改變預設設定。
[command] | tee -a [file]
基本上,-a
選項強制 tee
命令追加資訊到檔案。
Q3、 如何讓 tee 寫入多個檔案?
這非常之簡單。你僅僅只需要寫明檔案名即可。
[command] | tee [file1] [file2] [file3]
比如:
ping google.com | tee output1.txt output2.txt output3.txt
如何讓 tee 寫入多個檔案
Q4. 如何讓 tee 命令的輸出內容直接作為另一個命令的輸入內容?
使用 tee
命令,你不僅可以將輸出內容寫入檔案,還可以把輸出內容作為另一個命令的輸入內容。比如說,下麵的命令不僅會將檔案名存入 output.txt
檔案中,還會透過 wc
命令讓你知道輸入到 output.txt
中的檔案數目。
ls file* | tee output.txt | wc -l
如何讓 tee 命令的輸出內容直接作為另一個命令的輸入內容
Q5. 如何使用 tee 命令提升檔案寫入許可權?
假如你使用 Vim 編輯器[1] 開啟檔案,並且做了很多更改,然後當你嘗試儲存修改時,你得到一個報錯,讓你意識到那是一個 root 所擁有的檔案,這意味著你需要使用 sudo
許可權儲存修改。
如何使用 tee 命令提升檔案寫入許可權
如此情況下,你可以(在 Vim 內)使用 tee
命令來提高許可權。
:w !sudo tee %
上述命令會向你索要 root 密碼,然後就能讓你儲存修改了。
Q6. 如何讓 tee 命令忽視中斷?
-i
命令列選項使 tee
命令忽視通常由 ctrl+c
組合鍵發起的中斷訊號(SIGINT
)。
[command] | tee -i [file]
當你想要使用 ctrl+c
中斷該命令,同時讓 tee
命令優雅的退出,這個選項尤為實用。
總結
現在你可能已經認同 tee
是一個非常實用的命令。基於 tee
命令的用法,我們已經介紹了其絕大多數的命令列選項。這個工具並沒有什麼陡峭的學習曲線,所以,只需跟隨這幾個例子練習,你就可以運用自如了。更多資訊,請檢視 說明檔案[2].
via: https://www.howtoforge.com/linux-tee-command/
作者:Himanshu Arora[4] 譯者:CYLeft 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出