1. 程式人生 > >Linux命令——tee

Linux命令——tee

轉自:Linux tee Command Explained for Beginners (6 Examples)

8 Linux Tee Command with Examples

國內已有人翻譯此文:為初學者介紹的 Linux tee 命令(6 個例子)

簡介

有時候,你會想手動跟蹤命令的輸出內容,同時又想將輸出的內容寫入檔案,確保之後可以用來參考。如果你想尋找這相關的工具,那麼恭喜你,Linux 已經有了一個叫做 tee 的命令可以幫助你。tee命令讀入標準輸入,並寫到標準輸出和檔案(一個或多個)。tee命令以管道中使用的T分配器(T-splitter)命名。 它基本上打破了程式的輸出,因此它既可以顯示也可以儲存在檔案中。 它同時執行兩個任務,將結果複製到指定的檔案或變數中,並顯示結果。見下圖

語法

tee [OPTION]... [FILE]...

選項

  • -a或--append 附加到既有檔案的後面,而非覆蓋它.
  • -i或--ignore-interrupts 忽略中斷訊號。
  • --help 線上幫助。
  • --version 顯示版本資訊。

典型用法

如何在 Linux 上使用這個命令

假設因為某些原因,你正在使用 ping 命令。

然後同時,你想要輸出的資訊也同時能寫入檔案。這個時候,tee 命令就有其用武之地了。

ping google.com | tee output.txt

可見,tee命令輸出內容不僅被寫入 output.txt

 檔案,也被顯示在標準輸出中。

如何確保 tee 命令追加資訊到檔案中?

預設情況下,在同一個檔案下再次使用 tee 命令會覆蓋之前的資訊。如果你想的話,可以通過 -a 命令選項改變預設設定。

[command] | tee -a [file]

如何讓 tee 寫入多個檔案?

非常簡單,只需要多寫明幾個檔名就行了。

[command] | tee [file1] [file2] [file3]

如何讓 tee 命令的輸出內容直接作為另一個命令的輸入內容?

下面的命令不僅會將檔名存入 output.txt 檔案中,還會通過 wc

 命令讓你知道輸入到 output.txt 中的檔案數目。

如何檢視日誌檔案並寫入檔案

我們可以通過tee命令分析通過apache2伺服器的HTTP2流量。實時日誌可以傳輸到標準輸出,也可以寫入檔案以供日後進一步分析。

sudo tail -f /var/log/apache2/access.log | grep --line-buffered "HTTP/2.0" | tee -a http2.log
View Code

如何使用 tee 命令提升檔案寫入許可權?

假如你使用 Vim 編輯器 開啟檔案,並且做了很多更改,然後當你嘗試儲存修改時,你得到一個報錯,讓你意識到那是一個 root使用者所擁有的檔案,這意味著你需要使用 sudo 許可權儲存修改。

如此情況下,你可以(在 Vim 內)使用 tee 命令來提高許可權。

:w !sudo tee %

上述命令會向你索要 root 密碼,然後就能讓你儲存修改了。

普通使用者怎麼建立root使用者的檔案?

 sudo echo 'Documents' | sudo tee -a folder_of_root.txt
View Code

上述命令會向你索要 root 密碼,然後資料就寫到了folder_of_root.txt。

如何讓 tee 命令忽視中斷?

-i 命令列選項使 tee 命令忽視通常由 ctrl+c 組合鍵發起的中斷訊號(SIGINT)。