Linux Tee 命令真實示例詳細(xì)指南
使用 Linux 終端時,您可能需要執(zhí)行命令將一些數(shù)據(jù)寫入文件并進(jìn)一步處理其輸出。命令是一個可以幫助您實現(xiàn)這一目標(biāo)的強大實用程序??tee?
?。這篇文章將為您提供有關(guān)tee命令的詳細(xì)指南,并向您展示tee命令的一些真實示例。
什么是 Tee 命令?
這個??tee?
?命令是一個 Linux 命令,它將標(biāo)準(zhǔn)輸入復(fù)制到標(biāo)準(zhǔn)輸出(通常是您的屏幕)和指定文件。這對于將命令連接在一起非常有用,并且當(dāng)您想要將輸出重定向到單個或多個文件并仍然進(jìn)一步處理輸出時非常方便。該??tee?
?命令得名于水管工在連接多根水管時使用的 T 型分流器。如果您不熟悉 Linux 終端,這聽起來可能有點復(fù)雜。讓我們嘗試使用圖形演示。
假設(shè)我們有一個名為??linuxmi.txt?
?. 我們要對該文本文件進(jìn)行排序,將輸出寫入文件,并在終端上顯示項目總數(shù)。我們使用下面的兩個命令:
linuxmi@linuxmi:~/www.linuxmi.com$ sort linuxmi.txt > 300.txt
linuxmi@linuxmi:~/www.linuxmi.com$ wc -l 300.txt
8 300.txt
但是,我們可以使用下面的 tee 命令來簡化它。
linuxmi@linuxmi:~/www.linuxmi.com$ sort linuxmi.txt | tee 300.txt | wc -l
安裝 Tee 命令
該??tee?
?命令是隨 GNU Coreutils 安裝的工具之一。因此,它預(yù)裝在任何 Linux 發(fā)行版上,您無需手動安裝。但是,您可以通過運行以下命令來確認(rèn)該實用程序是否可用。
linuxmi@linuxmi:~/www.linuxmi.com$ which tee
/usr/bin/tee
要檢查系統(tǒng)上運行的tee命令的版本,請運行以下命令。
linuxmi@linuxmi:~/www.linuxmi.com$ tee --version
Tee 命令的基本語法
tee 命令的基本語法如下:tee [選項]... [文件]...這里的 [ 選項 ] 可能包括:
- ?
?-a?
?:防止 tee 命令覆蓋現(xiàn)有文件,而是追加數(shù)據(jù)。 - ?
?--version?
?:此選項顯示當(dāng)前安裝的 tee 命令版本。 - ?
?--help?
?: 此選項列出了 tee 命令可用的所有選項
tee 命令應(yīng)用程序
現(xiàn)在您已經(jīng)對 Tee 命令有了很好的理解,讓我們看一些實際示例,您可以在這些示例中應(yīng)用這個強大的命令行實用程序。
1. 將 Ping 命令的輸出寫入文件
您一定遇到過 ping 命令,尤其是在診斷網(wǎng)絡(luò)連接時。Ping 用于測試網(wǎng)絡(luò)上主機的可用性。例如,如果你正在配置一個服務(wù)器,你可以通過執(zhí)行類似的命令來檢查它是否在線ping [服務(wù)器地址]例如,
linuxmi@linuxmi:~/www.linuxmi.com$ ping 192.168.174.170
現(xiàn)在,如果我們想將此輸出寫入文件同時仍顯示來自服務(wù)器的響應(yīng),我們可以執(zhí)行以下命令。
linuxmi@linuxmi:~/www.linuxmi.com$ ping yahoo.com | tee pingLinuxMi.txt
下圖顯示了寫入文件的 ping 輸出以及??stdout?
?.
2. 使用 Tee 命令將數(shù)據(jù)附加到文件中
默認(rèn)情況下,當(dāng)您執(zhí)行??tee?
?命令將輸出寫入現(xiàn)有文件時,它會自動覆蓋所有現(xiàn)有數(shù)據(jù)。例如,??tee?
?如果我們運行具有相同文件名的新 ping 命令來寫入輸出,將自動覆蓋現(xiàn)有數(shù)據(jù)。我們將使用??-a?
?如下語法所示的選項來防止這種情況。
ping -a [文件名]
linuxmi@linuxmi:~/www.linuxmi.com$ ping 192.168.174.170 | tee -a pingLinuxMi.txt
3. 使用 Tee 寫入多個文件
如果您使用其他 Linux 命令來操作多個文件,這將非常容易。要使用??tee?
?命令寫入多個文件,我們將使用以下語法。
[你的命令] | tee file1 file2 file3 file4
4. 使用 Tee 將命令輸出重定向到另一個命令
除了將輸出寫入文件之外,還可以使用??tee?
?命令將一個命令的輸出重定向到另一個命令。讓我們使用下面的示例。我們想使用??ls?
?命令列出主目錄中的所有文件,然后使用 ??wc -l?
? 命令計算存在的文件總數(shù)。由于 ??tee?
? 我們可以使用單行命令,而不是編寫兩個不同的命令,如下所示。
linuxmi@linuxmi:~/www.linuxmi.com$ ls ~ | tee linuxmi.txt | wc -l
5. 執(zhí)行 Tee 時忽略中斷
為了停止終端中運行的任何命令,我們總是使用??Ctrl + C?
?鍵盤組合來中斷進(jìn)程。如果您正在使用 Tee 運行一項關(guān)鍵任務(wù),則可以使用??-i?
?選項防止鍵盤中斷 ( ??SIGINT?
?)。使用下面的語法。
[command] | tee -i [file-name]
6.隱藏tee輸出
有時您執(zhí)行的命令會在終端中打印出許多不必要的輸出。幸運的是,您可以通過將輸出重定向到??/dev/null?
?來隱藏輸出。使用下面的語法。
[command] | tee output_file_name >/dev/null
在下圖中,您可以看到我們執(zhí)行了 ping 命令,但終端中沒有打印輸出。但是,它已全部寫入指定的輸出文件。
7. 將 Tee 與 sudo 一起使用
在某些情況下,您希望將數(shù)據(jù)寫入root用戶擁有的文件。我們稱這個文件為??linuxmi.conf?
?。如果我們執(zhí)行下面的命令,我們會得到錯誤。
linuxmi@linuxmi:~/www.linuxmi.com$ echo "300" > linuxmi.conf
bash: linuxmi.conf: 權(quán)限不夠
為了解決這個問題,我們可以使用 Tee 命令添加到?
?sudo?
?我們的命令中,如下所示。
linuxmi@linuxmi:~/www.linuxmi.com$ echo "300" > linuxmi.conf
結(jié)論
至此,我相信您現(xiàn)在已經(jīng)很好地理解了 tee 命令以及如何使用它來執(zhí)行您的日常任務(wù)。通過在你的系統(tǒng)上練習(xí)更多的例子,你應(yīng)該很高興。如果您有任何反饋或問題,請隨時在評論中告訴我們,我們會盡快回復(fù)您。