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