如何在 Linux 上使用 tee 指令

如何在 Linux 上使用 tee 指令

重點

  • Linux 上的「tee」指令將指令的輸出儲存到檔案中,同時也將其顯示在終端機上。
  • 它還可以同時將輸出寫入多個文件,從而輕鬆備份和追蹤系統日誌。
  • “tee”指令也可以透過管道與其他指令一起使用。這使得可以進一步處理輸出,同時將其保存到文件中。例如,您可以在此命令中將其與“ls”一起使用:“ls ~ | 發球檯列表.txt”

tee命令可以保存命令的輸出以供以後查看。該命令不僅在螢幕上顯示輸出,而且還將其記錄在單獨的日誌檔案中。假設您想要將df 指令的輸出儲存到檔案中,以便可以追蹤一段時間內的磁碟空間使用情況。此命令可協助您對進程進行故障排除,因為它維護進程的書面記錄。

Linux 上的 tee 指令是什麼?

Linuxtee命令是在Linux上節省時間和提高效率的有用工具。它可以讀取標準輸入 (stdin)並將其寫入標準輸出 (stdout)和您指定的一個或多個檔案。這個tee指令的工作原理就像一個 T 形管,將水分成兩個方向。它允許您查看程式的輸出並將其同時保存在文件中。

tee指令同時執行這兩項操作。它允許您將輸出複製到您選擇的檔案或變數中並將其顯示給您。此命令也用於shell 腳本和終端命令中,以將輸出傳送到不同的位置。您可以使用該tee命令進行備份、查找腳本中的錯誤以及追蹤系統日誌。

tee命令還允許您將其與其他命令一起透過管道傳輸。這樣,您可以將輸出保存到文件中,並使用任何其他命令進一步處理它。

幾乎所有 Linux 發行版都預先安裝了該tee命令,它是 Coreutils 軟體包的一部分。

tee命令遵循與其他 Linux 命令類似的語法。它有兩個參數,–OPTIONS 和 FILES:

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

要了解您正在使用的命令版本tee,只需執行以下命令:

tee --version

終端機上 tee 指令的版本

如果您需要命令的語法和可用參數的協助tee,請鍵入以下內容:

tee --help

tee 命令幫助

tee 指令選項

tee命令有多個選項來修改其功能。下表顯示了一些可協助您tee有效使用該指令的選項:

選項

描述

-a or --append

將輸出附加到文件末尾而不是覆蓋它們。

-i or --ignore-interrupts

忽略 Ctrl+C 等中斷訊號。

-p or --output-error

對於寫入檔案時發生的每個錯誤,請列印有關標準錯誤的錯誤訊息。

--help

顯示與命令選項相關的基本幫助。

--version

顯示tee命令版本。

在 Linux 中使用 tee 將輸出儲存到文件

tee命令將命令的輸出儲存到檔案中,同時也將其顯示在終端機上。例如,該tee命令將讓您查看主目錄中的檔案和目錄,並將它們保存在單獨的檔案中。為此,請使用lstee命令透過管道傳輸該命令,如下所示:

ls ~ | tee list.txt

ls 與 tee 指令並將輸出儲存到文字文件

這將顯示主目錄中的所有檔案和目錄並將它們寫入“list.txt”。若要查看「list.txt」的內容,請使用任何文字編輯器或命令,例如catlessmorecommand 。

cat list.txt

cat 指令讀取列表文字文件

讓我們使用echo 命令執行另一個範例來儲存並查看輸出。首先,使用echo命令在終端機上列印文字。之後,tee透過管道將該echo命令寫入到名為「output.txt」的檔案中。

echo "Welcome to Ubuntu"| tee output.txt

使用 tee 指令 echo 指令管道

最後,使用cat指令驗證「output.txt」檔案的內容。

cat output.txt

cat指令讀取文字檔內容

使用 tee 將輸出寫入 Linux 中的多個文件

tee命令還可以同時將輸出寫入多個檔案。您只需在tee要寫入的命令後定義檔案名稱即可。只需用空格將它們分開即可。

例如,要將echo命令的輸出儲存到三個不同的文件,請使用下列語法:

echo "Welcome to Ubuntu"| tee file1.txt file2.txt file3.txt

echo 指令透過帶有多個檔案名稱的 tee 指令進行管道傳輸

這會將字串「Welcome to Ubuntu」寫入三個檔案:file1.txt、file2.txt 和 file3.txt。它還將它們顯示在終端上。若要查看這些文件的內容,請使用cathead命令:

head -v file1.txt file2.txt file3.txt

head指令讀取多個文字檔內容

同樣,該cat命令也將顯示相同的輸出:

cat -v file1.txt file2.txt file3.txt

cat指令讀取多個文字檔內容

您可以使用該命令將輸出寫入任意數量的檔案tee。只需在命令後鍵入檔案名,檔案tee名稱之間留有空格。

使用 tee 將輸出附加到文件

Linux 上的指令tee預設會覆蓋檔案內容。該命令的-aor--append選項tee允許您將輸出附加到文件末尾,而不是替換其內容。

在將資料附加到文件之前,讓我們使用以下命令檢查文件中目前的資料:

cat output.txt

cat指令從output.txt檔案讀取數據

現在,我們可以透過鍵入以下內容附加新資料而不覆蓋它:

echo "tee Command on Linux"| tee -a output.txt

echo 命令使用 tee 和 -a 選項進行管道傳輸,以將輸出附加到現有文件

這會將命令的輸出附加到 output.txt 的結尾,而不刪除其中的任何先前內容。要驗證,請運行cat命令:

cat output.txt

cat 指令讀取輸出文字文件

使用 tee 隱藏輸出

有時,您可能希望將命令的輸出儲存在檔案中,而不將其顯示在終端上。如果您想以靜默方式運行命令,而又不想讓終端機因不必要的輸出而變得混亂,那麼這會很有用。在這種情況下,您必須將命令輸出定向到設備/dev/null。它/dev/null通常被稱為“空設備”或“空文件”。它充當資料接收器,這意味著寫入其中的任何資料都會被丟棄,並且實際上不會儲存在任何地方。

這是隱藏命令輸出的一種方法echo

echo "Welcome to Ubuntu"| tee output.txt > /dev/null

echo 指令透過 tee 指令和 dev null 裝置進行管線傳輸

這會將命令的輸出寫入 output.txt 並將其發送到/dev/null,這將有效地將其從螢幕上隱藏。但是,該cat命令將允許您透過查看文件內容來驗證輸出:

cat output.txt

cat指令讀取文字檔content-1

使用 tee 將一個指令的輸出重新導向到另一個指令

tee命令還可以將一個命令的輸出重新導向到檔案或任何其他命令。帶有管道 (|) 的命令tee可讓您將第一個命令的輸出傳送到標準輸出和第二個命令或檔案。考慮以下範例:

echo "This is Ubuntu"| tee output.txt | wc -c

echo 指令透過 tee 和 wc 進行管道傳輸以重新導向輸出

命令echo輸出“Welcome to Ubuntu”將寫入到output.txt 檔案中。之後,管道運算子與tee命令一起使用。這會將文件內容傳遞給wc 指令。此wc命令將輸出計數的總字元數並顯示一個整數值。

若要驗證該tee命令是否也已將輸出寫入文件,請使用該cat命令顯示文件內容:

cat output.txt

讀取輸出文字檔的 Cat 命令

將 tee 指令與 sudo 一起使用

當您使用該tee命令時,它將命令的輸出寫入常規檔案。但是,某些檔案和目錄(例如係統目錄或受保護的檔案)需要超級使用者權限才能修改。若要寫入這些文件或其他使用者擁有的文件,請tee與 結合使用sudo

在下面的範例中,當您嘗試在不使用sudo 的情況下編寫 root 擁有的「file.conf」檔案時,它會給您一個權限被拒絕的錯誤。

echo "This is Ubuntu"| tee -a /etc/file.conf

echo 指令在沒有 sudo 權限的情況下使用 tee 指令進行管道傳輸

但是,當您使用該sudo命令時tee,它將運行而不會出現任何錯誤。您可以使用該命令以 root 使用者或檔案擁有者的身分sudo執行該命令。tee只需在前面sudo加上tee命令:

echo "This is Ubuntu"| sudo tee -a /etc/file.conf

echo 指令透過帶有 sudo 權限的 tee 指令進行管道傳輸

首先,該tee命令將獲取echo命令輸出。之後,它提升sudo權限並將文字寫入檔案。

在 Bash 腳本中使用 tee 的範例

tee命令在各種腳本編寫場景中都很有用。它可以幫助您記錄或捕獲命令的輸出以進行進一步處理或調試。該tee命令不僅會顯示輸出,還會將其儲存到一個或多個檔案中以供以後使用。

例如,如果您想在終端機上查看日期和時間並將其寫入名為 log.txt 的文件,請使用下列bash 腳本

#!/bin/bashdate | tee log.txt

Bash 腳本將日期儲存到日誌文件

在本例中,標準輸入是 date 指令的輸出,它顯示目前日期和時間。此tee命令將此輸出寫入終端機和檔案 log.txt。如果檔案 log.txt 不存在,則會建立該檔案。如果存在,它將被覆蓋,除非您使用-a附加到文件的選項。

cat log.txt

讀取日誌檔案內容的cat命令

#!/bin/bashdate | tee log1.txt log2.txt

使用 tee 指令寫入多個檔案的 Bash 腳本

此腳本將日期和時間列印到終端機以及兩個名為 log1.txt 和 log2.txt 的檔案。使用命令讀取兩個文件內容cat

cat log1.txt log2.txt

讀取多個日誌文字檔案內容的cat命令

讓我們考慮另一個簡單的 bash 腳本,它使用命令來獲取輸入並將其儲存在日誌檔案中tee

#!/bin/bashlog_file="user_input.log"echo "Please enter some text:"read user_inputecho "$user_input" | tee -a "$log_file"echo "User input has been logged to $log_file"

Bash 腳本讀取使用者輸入並將輸出顯示到終端

在給定的 bash 腳本中,定義一個名為「log_file」的變量,並為其指定要使用的日誌檔案的名稱,例如「user_input.log」。然後,使用echo命令和read命令提示您輸入一些文字並將其儲存在變數中。接下來,使用tee帶有-a選項的命令在終端機上顯示 Enter 輸入並將其附加到日誌檔案中。

最後echo再次使用指令進行回饋。這將告訴您您的輸入已記錄到文件中。這樣,您就可以建立一個 bash 腳本,將輸入儲存到日誌檔案中並將其顯示在螢幕上。

使用命令運行 bash 腳本bash

bash test.sh

運行測試腳本的 bash 命令

監控 Linux 系統上的進程

要密切了解 Linux 系統的運作情況,您應該觀察其進程的活動。這包括 CPU 和記憶體使用情況、磁碟 I/O 和網路活動。

與該tee命令一樣,Linux 還有多個其他命令可以幫助您輕鬆監控進程。一些主要指令包括pstoppgrep指令。Linux 系統經常同時運行多個進程。使用這些命令,您可以確定關鍵任務的優先順序、適當地分配資源並防止資源爭用。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *