自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux中的9個(gè)tee命令示例

系統(tǒng) Linux
在本指南中,我們將對(duì)Linux tee命令進(jìn)行更多詳細(xì)的說(shuō)明,并使用一些示例來(lái)演示其用法。

Linux Tee命令是一個(gè)命令行工具,它從標(biāo)準(zhǔn)輸入中讀取結(jié)果,并將結(jié)果寫入標(biāo)準(zhǔn)輸出和文件中。使用Linux中的tee命令可以一舉兩得:從標(biāo)準(zhǔn)輸入讀取結(jié)果,同時(shí)將結(jié)果打印到文件和標(biāo)準(zhǔn)輸出。還是不懂,這是什么意思?在本指南中,我們將對(duì)Linux tee命令進(jìn)行更多詳細(xì)的說(shuō)明,并使用一些示例來(lái)演示其用法。

Tee命令語(yǔ)法

tee命令語(yǔ)法非常簡(jiǎn)單,采用以下格式:

  1. $tee 選項(xiàng) 文件 

以下是可以與tee命令一起使用的一些選項(xiàng):

  1. linuxmi@linuxmi:~/www.linuxmi.com$ tee --help 
  2. 用法:tee [選項(xiàng)]... [文件]... 
  3. 將標(biāo)準(zhǔn)輸入復(fù)制到每個(gè)指定文件,并顯示到標(biāo)準(zhǔn)輸出。 
  4.  
  5.   -a, --append        內(nèi)容追加到給定的文件而非覆蓋 
  6.   -i, --ignore-interrupts    忽略中斷信號(hào) 
  7.   -p                        對(duì)寫入非管道的行為排查錯(cuò)誤 
  8.       --output-error[=模式]   設(shè)置寫入出錯(cuò)時(shí)的行為。見下面“模式”部分 
  9.       --help        顯示此幫助信息并退出 
  10.       --version        顯示版本信息并退出 
  11.  
  12. 模式確定向輸出寫入出錯(cuò)時(shí)的行為: 
  13.   'warn'         對(duì)向任何文件輸出出錯(cuò)的情況進(jìn)行診斷 
  14.   'warn-nopipe'  對(duì)向除了管道以外的任何文件輸出出錯(cuò)的情況進(jìn)行診斷 
  15.   'exit'         一旦輸出出錯(cuò),則退出程序 
  16.   'exit-nopipe'  一旦輸出出錯(cuò)且非管道,則退出程序 
  17. -p 選項(xiàng)的默認(rèn)模式是“warn-nopipe”。 
  18. 當(dāng) --output-error 沒有給出時(shí),默認(rèn)的操作是在向管道寫入出錯(cuò)時(shí)立刻退出, 
  19. 且在向非管道寫入出錯(cuò)時(shí)對(duì)問題進(jìn)行診斷。 

在tee命令的語(yǔ)法中,文件指的是一個(gè)或多個(gè)文件。

讓我們看看這個(gè)命令是如何使用的。

示例1 – tee命令的基本用法

如前所述,tee命令的主要功能是顯示命令(stdout)的輸出并將其保存到一個(gè)文件中。在下面的示例中,我們檢查系統(tǒng)中的塊設(shè)備并將結(jié)果發(fā)送到tee命令,tee命令將輸出顯示到終端,同時(shí)將其保存在名為www.linuxmi.com .txt的新文件中:

  1. linuxmi@linuxmi:~/www.linuxmi.com$ lsblk | tee www.linuxmi.com.txt 

可以使用cat命令檢查www.linuxmi.com.txt文件的內(nèi)容,如下所示:

  1. cat www.linuxmi.com.txt 

示例2 – 使用tee將命令輸出保存到多個(gè)文件

此外,您可以將命令的輸出寫入幾個(gè)空格分隔的文件,如下面的語(yǔ)法所示。

  1. $ command | tee file1 file2 file3 . . .  
  2. linuxmi@linuxmi:~/www.linuxmi.com$ hostnamectl | tee linuxmi.txt linuxmi.com.txt 

同樣,您可以使用cat命令確認(rèn)兩個(gè)文件中的輸出是否存在,如下所示:

  1. cat linuxmi.txt 
  2. cat linuxmi.com.txt 

示例3 – 禁止在屏幕輸出tee命令

如果要隱藏或禁止tee命令在屏幕上打印輸出,請(qǐng)將輸出重定向到/dev/null,如圖所示:

  1. $ command | tee file > /dev/null 

例如,

  1. linuxmi@linuxmi:~/www.linuxmi.com$ df -Th | tee linuxmi.txt > /dev/null 
  2. linuxmi@linuxmi:~/www.linuxmi.com$ uname -a | tee linuxmi.txt > /dev/null 
  3. linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.txt 
  4. Linux linuxmi 5.4.0-48-generic #52-Ubuntu SMP Thu Sep 10 10:58:49 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux 

示例4 – 使用tee命令將輸出附加到文件

默認(rèn)情況下,tee命令覆蓋文件的內(nèi)容(比如示例3)。要附加輸出并防止擦除當(dāng)前內(nèi)容,請(qǐng)使用-a或–append選項(xiàng)。

  1. $ command | tee -a file 

在第二個(gè)命令中,如圖所示,我們將date命令的輸出附加到linuxmi.com.txt,其中已經(jīng)包含了關(guān)于系統(tǒng)上USB設(shè)備的信息。

  1. linuxmi@linuxmi:~/www.linuxmi.com$ lsusb | tee linuxmi.com.txt 
  2. linuxmi@linuxmi:~/www.linuxmi.com$ date | tee -a linuxmi.com.txt 

示例5 – 將tee與sudo命令一起使用

假設(shè)作為sudo用戶,您希望在根用戶擁有的文件上進(jìn)行寫入。當(dāng)然,任何提升的操作都需要在命令之前調(diào)用sudo用戶。

要實(shí)現(xiàn)這一點(diǎn),只需在tee命令前面添加sudo,如下所示。

  1. linuxmi@linuxmi:~/www.linuxmi.com$ echo “192.168.1.100 db-01” | sudo tee -a /etc/hosts 

因此,tee在左邊接收echo命令的輸出,并使用sudo命令提升它,該命令最終將輸出附加到文件中。

示例6 – 使用tee命令將一個(gè)命令的輸出重定向到另一個(gè)命令

使用tee命令,我們可以很容易地將一個(gè)命令的輸出重定向到另一個(gè)命令。這里第一個(gè)命令的輸出將作為第二個(gè)命令的輸入。示例如下:

  1. linuxmi@linuxmi:~/www.linuxmi.com$ grep ‘root’ /etc/passwd | tee /tmp/passwd.tmp | wc -l 

示例7 – 使用tee命令將更改保存到Vim編輯器中的文件

假設(shè)您以非root用戶身份工作,正在對(duì)root擁有的文件進(jìn)行更改,但忘記將sudo放在命令前面,現(xiàn)在您想保存更改,示例如下:

  1. linuxmi@linuxmi:~/www.linuxmi.com$ vim /etc/hosts 

保存對(duì)文件的更改時(shí),您將收到只讀消息,/etc/hosts” E212: 無(wú)法打開并寫入文件

現(xiàn)在要在Vim編輯器中保存對(duì)/etc/hosts文件的更改,請(qǐng)運(yùn)行

  1. :w !sudo tee % 

它將提示您輸入用戶的密碼,如果用戶擁有sudo權(quán)限,那么更改將被保存。

示例8 – 使用tee命令時(shí)忽略中斷信號(hào)

在tee命令中使用“-i”選項(xiàng)可以忽略中斷信號(hào)(CTRL-C),示例如下所示:

  1. linuxmi@linuxmi:~/www.linuxmi.com$ ping -c 5 linuxmi.com | tee -i /tmp/pingtest.tmp 

示例9 – shell腳本中的tee命令用法

在shell腳本中也經(jīng)常使用Tee命令,下面列出了一個(gè)常見的示例:

  1. linuxmi@linuxmi:~/www.linuxmi.com$ vi basic-script.sh 
  1. #!/bin/bash 
  2. LOGFILE=/tmp/basic-logs-$(date +%d%m%Y) 
  3. FLAVOR=$(cat /etc/*-release  | grep -w 'NAME=' | cut -d"=" -f2 | awk '{print $1}'| sed 's/"//g') 
  4. if [ $FLAVOR == CentOS ]; 
  5. then 
  6.    dmesg | grep -i 'error' | tee -a $LOGFILE 
  7.    grep -i 'installed' /var/log/dnf.log | tee -a $LOGFILE 
  8. else 
  9.    echo 'do nothing' 
  10. fi 

正如我們?cè)谏厦娴腖inux shell腳本中看到的,我們使用tee命令將兩個(gè)命令的輸出附加到日志文件中。

 

責(zé)任編輯:趙寧寧 來(lái)源: Linux迷
相關(guān)推薦

2022-05-08 09:39:20

LinuxTee 命令

2018-05-02 13:40:51

Linux命令touch

2020-05-20 13:45:52

Linuxtouch命令

2015-03-25 10:36:57

lsLinux

2022-08-29 08:33:22

SocatLinux命令

2020-04-16 14:20:16

Linuxtouch命令

2021-09-13 09:54:51

Linuxcrontab命令

2013-10-08 15:51:03

Linux find命

2013-05-23 15:10:34

Netcat

2013-10-08 16:24:34

Linux find命

2022-01-17 10:05:33

LinuxWatch命令

2018-03-12 15:26:00

Linux命令tee

2022-05-09 08:55:58

Linuxdiff命令

2017-03-06 16:45:36

Linux命令動(dòng)畫演示

2018-08-06 08:51:32

Linux命令cut

2021-12-06 10:15:37

Linuxcat命令

2018-01-02 10:36:29

Linux命令Cheat

2021-09-14 10:55:16

LinuxDate命令

2021-07-11 12:06:07

Linux Date命令

2020-12-07 10:48:31

Linuxls命令stat命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)