tee命令從標(biāo)準(zhǔn)輸入讀取內(nèi)容并同時(shí)寫入標(biāo)準(zhǔn)輸出與一個(gè)或多個(gè)文件。 tee命令常與管道以及其他命令結(jié)合使用。
在本教程中,我們將說明如何使用tee命令和常見的選項(xiàng)。 這其中包括使用tee寫入多個(gè)文件,追加到文件,忽略中斷,隱藏tee命令終端標(biāo)準(zhǔn)輸出,tee與sudo組合使用。
在討論如何使用tee命令之前,讓我們先回顧一下基本語法,這是tee命令的基本語法形式tee [OPTIONS] [FILE]
。
FILE
可以是一個(gè)或多個(gè)文件,OPTIONS
是tee的選項(xiàng),以下是一些常用的選項(xiàng)。
-a
/--append
表示追加到指定的文件,如果你不想文件的內(nèi)容被覆蓋請使用這個(gè)選項(xiàng)。 在沒有該選項(xiàng)時(shí),tee命令將會覆蓋文件已存在的內(nèi)容。
-i
/--ignore-interrupts
表示忽略中斷信號,也就是說會忽略ctrl+c
。 --help
表示查看所有可用的選項(xiàng)。
寫入文件
tee命令的最基本用法是將另一個(gè)命令的標(biāo)準(zhǔn)輸出寫入到文件。 除了寫入單個(gè)文件之外tee也可以寫入多個(gè)文件。
如你需要寫入到多個(gè)文件,只需在tee命令之后指定多個(gè)文件名并使用空格分隔的文件名。
如果您不想tee
命令寫入到標(biāo)準(zhǔn)輸出,通常是終端的顯示輸出,您只需將其重定向到空設(shè)備/dev/null
。
echo "myfreax" | tee file1 file2 #寫入到多個(gè)文件中
command | tee -a file.out #追加內(nèi)容到文件
command | tee -i file.out #忽略中斷命令
command | tee file.out >/dev/null #隱藏tee的標(biāo)準(zhǔn)輸出
tee與sudo重定向
如果您嘗試將sudo命令的輸出重定向到用戶沒有寫權(quán)限的文件,則會收到權(quán)限拒絕的錯(cuò)誤消息permission denied
。
例如命令sudo echo "test" > /root/file.txt
使用echo和重定向操作符>
,將標(biāo)準(zhǔn)輸出重定向到/root/file.txt
文件。
你將會收到錯(cuò)誤消息bash: /root/file.txt: Permission denied。
之所以會這樣,是因?yàn)闃?biāo)準(zhǔn)輸出的重定向>
是以您登錄的用戶而不是sudo指定的用戶運(yùn)行。 重定向在調(diào)用sudo
命令之前發(fā)生。
一種解決方案是使用sudo sh -c
以root用戶創(chuàng)建子shell進(jìn)程運(yùn)行命令。 另一種解決方是將普通用戶的標(biāo)準(zhǔn)輸出通過管道傳遞給到tee
命令。
sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied
echo "newline" | sudo tee -a /etc/file.conf
結(jié)論
到目前為止,您應(yīng)該很好地理解如何使用tee命令。
-
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209322 -
文件
+關(guān)注
關(guān)注
1文章
565瀏覽量
24727 -
命令
+關(guān)注
關(guān)注
5文章
683瀏覽量
22011 -
TEE
+關(guān)注
關(guān)注
0文章
29瀏覽量
10256
發(fā)布評論請先 登錄
相關(guān)推薦
評論