如何在 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 --help
tee 指令選項
該tee
命令有多個選項來修改其功能。下表顯示了一些可協助您tee
有效使用該指令的選項:
選項 |
描述 |
---|---|
|
將輸出附加到文件末尾而不是覆蓋它們。 |
|
忽略 Ctrl+C 等中斷訊號。 |
|
對於寫入檔案時發生的每個錯誤,請列印有關標準錯誤的錯誤訊息。 |
|
顯示與命令選項相關的基本幫助。 |
|
顯示 |
在 Linux 中使用 tee 將輸出儲存到文件
該tee
命令將命令的輸出儲存到檔案中,同時也將其顯示在終端機上。例如,該tee
命令將讓您查看主目錄中的檔案和目錄,並將它們保存在單獨的檔案中。為此,請使用lstee
命令透過管道傳輸該命令,如下所示:
ls ~ | tee list.txt
這將顯示主目錄中的所有檔案和目錄並將它們寫入“list.txt”。若要查看「list.txt」的內容,請使用任何文字編輯器或命令,例如cat、less或more
command 。
cat list.txt
讓我們使用echo 命令執行另一個範例來儲存並查看輸出。首先,使用echo
命令在終端機上列印文字。之後,tee
透過管道將該echo
命令寫入到名為「output.txt」的檔案中。
echo "Welcome to Ubuntu"| tee output.txt
最後,使用cat指令驗證「output.txt」檔案的內容。
cat output.txt
使用 tee 將輸出寫入 Linux 中的多個文件
該tee
命令還可以同時將輸出寫入多個檔案。您只需在tee
要寫入的命令後定義檔案名稱即可。只需用空格將它們分開即可。
例如,要將echo
命令的輸出儲存到三個不同的文件,請使用下列語法:
echo "Welcome to Ubuntu"| tee file1.txt file2.txt file3.txt
這會將字串「Welcome to Ubuntu」寫入三個檔案:file1.txt、file2.txt 和 file3.txt。它還將它們顯示在終端上。若要查看這些文件的內容,請使用cat
或head
命令:
head -v file1.txt file2.txt file3.txt
同樣,該cat
命令也將顯示相同的輸出:
cat -v file1.txt file2.txt file3.txt
您可以使用該命令將輸出寫入任意數量的檔案tee
。只需在命令後鍵入檔案名,檔案tee
名稱之間留有空格。
使用 tee 將輸出附加到文件
Linux 上的指令tee
預設會覆蓋檔案內容。該命令的-a
or--append
選項tee
允許您將輸出附加到文件末尾,而不是替換其內容。
在將資料附加到文件之前,讓我們使用以下命令檢查文件中目前的資料:
cat output.txt
現在,我們可以透過鍵入以下內容附加新資料而不覆蓋它:
echo "tee Command on Linux"| tee -a output.txt
這會將命令的輸出附加到 output.txt 的結尾,而不刪除其中的任何先前內容。要驗證,請運行cat
命令:
cat output.txt
使用 tee 隱藏輸出
有時,您可能希望將命令的輸出儲存在檔案中,而不將其顯示在終端上。如果您想以靜默方式運行命令,而又不想讓終端機因不必要的輸出而變得混亂,那麼這會很有用。在這種情況下,您必須將命令輸出定向到設備/dev/null
。它/dev/null
通常被稱為“空設備”或“空文件”。它充當資料接收器,這意味著寫入其中的任何資料都會被丟棄,並且實際上不會儲存在任何地方。
這是隱藏命令輸出的一種方法echo
:
echo "Welcome to Ubuntu"| tee output.txt > /dev/null
這會將命令的輸出寫入 output.txt 並將其發送到/dev/null
,這將有效地將其從螢幕上隱藏。但是,該cat
命令將允許您透過查看文件內容來驗證輸出:
cat output.txt
使用 tee 將一個指令的輸出重新導向到另一個指令
該tee
命令還可以將一個命令的輸出重新導向到檔案或任何其他命令。帶有管道 (|) 的命令tee
可讓您將第一個命令的輸出傳送到標準輸出和第二個命令或檔案。考慮以下範例:
echo "This is Ubuntu"| tee output.txt | wc -c
命令echo
輸出“Welcome to Ubuntu”將寫入到output.txt 檔案中。之後,管道運算子與tee
命令一起使用。這會將文件內容傳遞給wc 指令。此wc
命令將輸出計數的總字元數並顯示一個整數值。
若要驗證該tee
命令是否也已將輸出寫入文件,請使用該cat
命令顯示文件內容:
cat output.txt
將 tee 指令與 sudo 一起使用
當您使用該tee
命令時,它將命令的輸出寫入常規檔案。但是,某些檔案和目錄(例如係統目錄或受保護的檔案)需要超級使用者權限才能修改。若要寫入這些文件或其他使用者擁有的文件,請tee
與 結合使用sudo
。
在下面的範例中,當您嘗試在不使用sudo 的情況下編寫 root 擁有的「file.conf」檔案時,它會給您一個權限被拒絕的錯誤。
echo "This is Ubuntu"| tee -a /etc/file.conf
但是,當您使用該sudo
命令時tee
,它將運行而不會出現任何錯誤。您可以使用該命令以 root 使用者或檔案擁有者的身分sudo
執行該命令。tee
只需在前面sudo
加上tee
命令:
echo "This is Ubuntu"| sudo tee -a /etc/file.conf
首先,該tee
命令將獲取echo
命令輸出。之後,它提升sudo
權限並將文字寫入檔案。
在 Bash 腳本中使用 tee 的範例
該tee
命令在各種腳本編寫場景中都很有用。它可以幫助您記錄或捕獲命令的輸出以進行進一步處理或調試。該tee
命令不僅會顯示輸出,還會將其儲存到一個或多個檔案中以供以後使用。
例如,如果您想在終端機上查看日期和時間並將其寫入名為 log.txt 的文件,請使用下列bash 腳本:
#!/bin/bashdate | tee log.txt
在本例中,標準輸入是 date 指令的輸出,它顯示目前日期和時間。此tee
命令將此輸出寫入終端機和檔案 log.txt。如果檔案 log.txt 不存在,則會建立該檔案。如果存在,它將被覆蓋,除非您使用-a
附加到文件的選項。
cat log.txt
#!/bin/bashdate | tee log1.txt log2.txt
此腳本將日期和時間列印到終端機以及兩個名為 log1.txt 和 log2.txt 的檔案。使用命令讀取兩個文件內容cat
。
cat log1.txt log2.txt
讓我們考慮另一個簡單的 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 腳本中,定義一個名為「log_file」的變量,並為其指定要使用的日誌檔案的名稱,例如「user_input.log」。然後,使用echo
命令和read
命令提示您輸入一些文字並將其儲存在變數中。接下來,使用tee
帶有-a
選項的命令在終端機上顯示 Enter 輸入並將其附加到日誌檔案中。
最後echo
再次使用指令進行回饋。這將告訴您您的輸入已記錄到文件中。這樣,您就可以建立一個 bash 腳本,將輸入儲存到日誌檔案中並將其顯示在螢幕上。
使用命令運行 bash 腳本bash
。
bash test.sh
監控 Linux 系統上的進程
要密切了解 Linux 系統的運作情況,您應該觀察其進程的活動。這包括 CPU 和記憶體使用情況、磁碟 I/O 和網路活動。
與該tee
命令一樣,Linux 還有多個其他命令可以幫助您輕鬆監控進程。一些主要指令包括ps、top和pgrep指令。Linux 系統經常同時運行多個進程。使用這些命令,您可以確定關鍵任務的優先順序、適當地分配資源並防止資源爭用。
發佈留言