簡述網(wǎng)站內(nèi)容管理流程程序員培訓(xùn)機(jī)構(gòu)排名前十
Linux系統(tǒng)之tee命令的基本使用
- 一、tee命令介紹
- 二、tee命令的使用幫助
- 2.1 tee命令的help幫助
- 2.2 tee命令幫助解釋
- 三、tee命令的基本使用
- 3.1 寫入文件
- 3.2 追加文件
- 3.3 結(jié)合sudo命令
- 3.4 結(jié)合EOF使用
- 四、注意事項(xiàng)
一、tee命令介紹
tee 是 Linux 和 Unix 系統(tǒng)中的一個(gè)命令,用于從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),并將其寫入到標(biāo)準(zhǔn)輸出和一個(gè)或多個(gè)文件中。它的名字來源于 T 型管的概念,在管道系統(tǒng)中,T 型管用來將流體分流到兩個(gè)方向。在命令行環(huán)境中,tee 用來把信息“分叉”,一份送到屏幕(或下一個(gè)命令),另一份則保存到文件中。
二、tee命令的使用幫助
2.1 tee命令的help幫助
在命令行終端中,我們使用
--help
選項(xiàng)查詢tee命令的基本幫助信息。
[root@RockyLinux-server001 ~]# tee --help
用法:tee [選項(xiàng)]... [文件]...
將標(biāo)準(zhǔn)輸入復(fù)制到每個(gè)指定文件,并顯示到標(biāo)準(zhǔn)輸出。-a, --append 內(nèi)容追加到給定的文件而非覆蓋-i, --ignore-interrupts 忽略中斷信號(hào)-p 對(duì)寫入非管道的行為排查錯(cuò)誤--output-error[=模式] 設(shè)置寫入出錯(cuò)時(shí)的行為。見下面“模式”部分--help 顯示此幫助信息并退出--version 顯示版本信息并退出模式確定向輸出寫入出錯(cuò)時(shí)的行為:'warn' 對(duì)向任何文件輸出出錯(cuò)的情況進(jìn)行診斷'warn-nopipe' 對(duì)向除了管道以外的任何文件輸出出錯(cuò)的情況進(jìn)行診斷'exit' 一旦輸出出錯(cuò),則退出程序'exit-nopipe' 一旦輸出出錯(cuò)且非管道,則退出程序
-p 選項(xiàng)的默認(rèn)模式是“warn-nopipe”。
當(dāng) --output-error 沒有給出時(shí),默認(rèn)的操作是在向管道寫入出錯(cuò)時(shí)立刻退出,
且在向非管道寫入出錯(cuò)時(shí)對(duì)問題進(jìn)行診斷。GNU coreutils 在線幫助:<https://www.gnu.org/software/coreutils/>
請(qǐng)向 <http://translationproject.org/team/zh_CN.html> 報(bào)告任何翻譯錯(cuò)誤
完整文檔 <https://www.gnu.org/software/coreutils/tee>
或者在本地使用:info '(coreutils) tee invocation'
2.2 tee命令幫助解釋
- 基本格式:
command | tee [options] outputfile
- 使用幫助:
選項(xiàng) | 描述 |
---|---|
-a , --append | 將內(nèi)容追加到給定的文件而非覆蓋。 |
-i , --ignore-interrupts | 忽略中斷信號(hào),如 Ctrl+C。 |
-p | 對(duì)寫入非管道的行為進(jìn)行錯(cuò)誤排查。 |
--output-error[=模式] | 設(shè)置寫入出錯(cuò)時(shí)的行為。見下表“模式”部分。 |
--help | 顯示此幫助信息并退出。 |
--version | 顯示版本信息并退出。 |
模式 | 描述 |
---|---|
'warn' | 對(duì)向任何文件輸出出錯(cuò)的情況進(jìn)行診斷。 |
'warn-nopipe' | 對(duì)向除了管道以外的任何文件輸出出錯(cuò)的情況進(jìn)行診斷。 |
'exit' | 一旦輸出出錯(cuò),則退出程序。 |
'exit-nopipe' | 一旦輸出出錯(cuò)且非管道,則退出程序。 |
默認(rèn)情況下,-p
選項(xiàng)的模式是 'warn-nopipe'
。當(dāng)沒有指定 --output-error
時(shí),默認(rèn)操作是在向管道寫入出錯(cuò)時(shí)立刻退出,并在向非管道寫入出錯(cuò)時(shí)對(duì)問題進(jìn)行診斷。
三、tee命令的基本使用
3.1 寫入文件
將 ls 命令的結(jié)果同時(shí)輸出到屏幕和名為 test.txt 的文件中
[root@RockyLinux-server001 ~]# ls | tee test.txt
aa01.txt
aa02.txt
aa03.txt
aa04.txt
aa05.txt
aa06.txt
anaconda-ks.cfg
test.txt
3.2 追加文件
將 cat somefile 的輸出追加到abc.txt文件中而不覆蓋它,并且也在屏幕上顯示:
cat abc.txt | tee -a abc.txt
[root@RockyLinux-server001 ~]# echo hello > abc.txt
[root@RockyLinux-server001 ~]# cat abc.txt | tee -a abc.txt
hello
[root@RockyLinux-server001 ~]# cat abc.txt
hello
hello
3.3 結(jié)合sudo命令
如果嘗試使用 tee 向一個(gè)需要管理員權(quán)限的文件寫入,則需要結(jié)合 sudo 使用。例如:
echo "data" | sudo tee /path/to/protected/file
3.4 結(jié)合EOF使用
使用 sudo tee 結(jié)合 here document(<<EOF … EOF)的語法,可以在具有管理員權(quán)限的情況下將多行文本內(nèi)容寫入文件中。具體來說,下面這行命令會(huì)將從 <<EOF 開始直到下一個(gè) EOF 之間的所有行作為輸入,通過 sudo tee 寫入到 mytest.aa 文件中,同時(shí)這些內(nèi)容也會(huì)顯示在標(biāo)準(zhǔn)輸出上。
sudo tee mytest.aa <<EOF
aa
bb
cc
dd
ee
EOF
四、注意事項(xiàng)
-
使用
sudo tee
而不是sudo
與echo
結(jié)合來確保整個(gè)命令鏈具有正確的權(quán)限,避免權(quán)限不足的問題。 -
默認(rèn)情況下
tee
會(huì)覆蓋目標(biāo)文件內(nèi)容,使用-a
選項(xiàng)可改為追加內(nèi)容到文件末尾而不破壞原有數(shù)據(jù)。 -
當(dāng)使用
tee
處理敏感信息時(shí),注意不要將敏感數(shù)據(jù)無意中寫入日志或不安全的文件位置。 -
結(jié)合
-p
選項(xiàng)可以使得tee
在遇到寫入錯(cuò)誤時(shí)輸出診斷信息,有助于故障排查。 -
使用
--output-error
可以更細(xì)粒度地控制tee
在面對(duì)不同類型的寫入錯(cuò)誤時(shí)的行為。