有時(shí)候,想手動(dòng)跟蹤命令的輸出內(nèi)容,同時(shí)又想將輸出的內(nèi)容寫入文件,確保之后可以用來參考。如果想尋找這相關(guān)的工具,那么恭喜你,Linux 已經(jīng)有了一個(gè)叫做 tee 的命令可以幫助你。
本教程中,我們將基于 tee 命令,用一些簡(jiǎn)單的例子開始討論。
Linux tee 命令
tee 命令基于標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),標(biāo)準(zhǔn)輸出或文件寫入數(shù)據(jù)。感受下這個(gè)命令的語法:
tee [OPTION]... [FILE]...
這里是幫助文檔的說明:
從標(biāo)準(zhǔn)輸入中復(fù)制到每一個(gè)文件,并輸出到標(biāo)準(zhǔn)輸出。
讓 Q&A(問&答)風(fēng)格的實(shí)例給我們帶來更多靈感,深入了解這個(gè)命令。
Q1、 如何在 Linux 上使用這個(gè)命令?
假設(shè)因?yàn)槟承┰颍阏谑褂?ping 命令。
ping google.com
如何在 Linux 上使用 tee 命令
如何在 Linux 上使用 tee 命令
然后同時(shí),你想要輸出的信息也同時(shí)能寫入文件。這個(gè)時(shí)候,tee 命令就有其用武之地了。
ping google.com | tee output.txt
下面的截圖展示了這個(gè)輸出內(nèi)容不僅被寫入 output.txt 文件,也被顯示在標(biāo)準(zhǔn)輸出中。
tee command 輸出
tee command 輸出
如此應(yīng)當(dāng)明白了 tee 的基礎(chǔ)用法。
Q2、 如何確保 tee 命令追加信息到文件中?
默認(rèn)情況下,在同一個(gè)文件下再次使用 tee 命令會(huì)覆蓋之前的信息。如果你想的話,可以通過 -a 命令選項(xiàng)改變默認(rèn)設(shè)置。
[command] | tee -a [file]
基本上,-a 選項(xiàng)強(qiáng)制 tee 命令追加信息到文件。
Q3、 如何讓 tee 寫入多個(gè)文件?
這非常之簡(jiǎn)單。你僅僅只需要寫明文件名即可。
[command] | tee [file1] [file2] [file3]
比如:
ping google.com | tee output1.txt output2.txt output3.txt
如何讓 tee 寫入多個(gè)文件
如何讓 tee 寫入多個(gè)文件
Q4. 如何讓 tee 命令的輸出內(nèi)容直接作為另一個(gè)命令的輸入內(nèi)容?
使用 tee 命令,你不僅可以將輸出內(nèi)容寫入文件,還可以把輸出內(nèi)容作為另一個(gè)命令的輸入內(nèi)容。比如說,下面的命令不僅會(huì)將文件名存入 output.txt 文件中,還會(huì)通過 wc 命令讓你知道輸入到 output.txt 中的文件數(shù)目。
ls file* | tee output.txt | wc -l
如何讓 tee 命令的輸出內(nèi)容直接作為另一個(gè)命令的輸入內(nèi)容
如何讓 tee 命令的輸出內(nèi)容直接作為另一個(gè)命令的輸入內(nèi)容
Q5. 如何使用 tee 命令提升文件寫入權(quán)限?
假如你使用 Vim 編輯器 打開文件,并且做了很多更改,然后當(dāng)你嘗試保存修改時(shí),你得到一個(gè)報(bào)錯(cuò),讓你意識(shí)到那是一個(gè) root 所擁有的文件,這意味著你需要使用 sudo 權(quán)限保存修改。
如何使用 tee 命令提升文件寫入權(quán)限
如何使用 tee 命令提升文件寫入權(quán)限
如此情況下,你可以(在 Vim 內(nèi))使用 tee 命令來提高權(quán)限。
:w !sudo tee %
上述命令會(huì)向你索要 root 密碼,然后就能讓你保存修改了。
Q6. 如何讓 tee 命令忽視中斷?
-i 命令行選項(xiàng)使 tee 命令忽視通常由 ctrl+c 組合鍵發(fā)起的中斷信號(hào)(SIGINT)。
[command] | tee -i [file]
當(dāng)你想要使用 ctrl+c 中斷該命令,同時(shí)讓 tee 命令優(yōu)雅的退出,這個(gè)選項(xiàng)尤為實(shí)用。