tee命令從標(biāo)準(zhǔn)輸入讀取內(nèi)容并同時寫入標(biāo)準(zhǔn)輸出與一個或多個文件。 tee命令常與管道以及其他命令結(jié)合使用。
在本教程中,我們將說明如何使用tee命令和常見的選項(xiàng)。 這其中包括使用tee寫入多個文件,追加到文件,忽略中斷,隱藏tee命令終端標(biāo)準(zhǔn)輸出,tee與sudo組合使用。
在討論如何使用tee命令之前,讓我們先回顧一下基本語法,這是tee命令的基本語法形式tee [OPTIONS] [FILE]。
FILE可以是一個或多個文件,OPTIONS是tee的選項(xiàng),以下是一些常用的選項(xiàng)。
-a/--append表示追加到指定的文件,如果你不想文件的內(nèi)容被覆蓋請使用這個選項(xiàng)。 在沒有該選項(xiàng)時,tee命令將會覆蓋文件已存在的內(nèi)容。
-i/--ignore-interrupts表示忽略中斷信號,也就是說會忽略ctrl+c。 --help表示查看所有可用的選項(xiàng)。
寫入文件
tee命令的最基本用法是將另一個命令的標(biāo)準(zhǔn)輸出寫入到文件。 除了寫入單個文件之外tee也可以寫入多個文件。
如你需要寫入到多個文件,只需在tee命令之后指定多個文件名并使用空格分隔的文件名。
如果您不想tee命令寫入到標(biāo)準(zhǔn)輸出,通常是終端的顯示輸出,您只需將其重定向到空設(shè)備/dev/null。
echo "myfreax" | tee file1 file2 #寫入到多個文件中
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)限拒絕的錯誤消息permission denied。
例如命令sudo echo "test" > /root/file.txt使用echo和重定向操作符> ,將標(biāo)準(zhǔn)輸出重定向到/root/file.txt文件。
你將會收到錯誤消息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)注
88文章
11581瀏覽量
217180 -
文件
+關(guān)注
關(guān)注
1文章
586瀏覽量
25875 -
命令
+關(guān)注
關(guān)注
5文章
745瀏覽量
23368 -
TEE
+關(guān)注
關(guān)注
0文章
29瀏覽量
10606
發(fā)布評論請先 登錄

如何使用Linux tee命令
評論