Linux中國

為初學者介紹的 Linux tee 命令(6 個例子)

有時候,你會想手動跟蹤命令的輸出內容,同時又想將輸出的內容寫入文件,確保之後可以用來參考。如果你想尋找這相關的工具,那麼恭喜你,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 編輯器 打開文件,並且做了很多更改,然後當你嘗試保存修改時,你得到一個報錯,讓你意識到那是一個 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 命令的用法,我們已經介紹了其絕大多數的命令行選項。這個工具並沒有什麼陡峭的學習曲線,所以,只需跟隨這幾個例子練習,你就可以運用自如了。更多信息,請查看 幫助文檔.

via: https://www.howtoforge.com/linux-tee-command/

作者:Himanshu Arora 譯者:CYLeft 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國