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