Il comando Linux Tee è uno strumento da riga di comando, legge dallo standard input e scrive il risultato nello standard output e nei file allo stesso tempo. In altre parole, possiamo dire, il comando tee in Linux usato per colpire due piccioni con una fava:lettura dallo standard input e stampa del risultato su un file e allo standard output contemporaneamente. Cosa intendiamo con questo? In questa guida, faremo più luce sul comando tee di Linux e utilizziamo alcuni esempi per dimostrarne l'utilizzo.
Sintassi del comando Tee
La sintassi del comando tee è abbastanza semplice e assume il seguente formato:
$ tee OPTIONS nomefile
Ecco alcune delle opzioni che puoi utilizzare con il comando tee:
Nella sintassi del comando tee, il nome del file si riferisce a uno o più file.
Con questo in mente, diamo un'occhiata ad alcuni esempi su come viene utilizzato il comando.
Esempio 1) Utilizzo di base del comando tee
Come descritto in precedenza, la funzione principale del comando tee è visualizzare l'output di un comando (stdout) e salvarlo in un file. Nell'esempio seguente, il comando che stiamo ispezionando i dispositivi a blocchi nel nostro sistema e inviando i risultati al comando tee che mostra l'output al terminale salvandolo contemporaneamente su un nuovo file chiamato block_devices.txt
$ lsblk | tee block_devices.txt
Sentiti libero di esaminare il contenuto del file block_devices.txt usando il comando cat come mostrato:
$ cat block_devices.txt
Esempio 2) Salva l'output del comando su più file usando tee
Inoltre, puoi scrivere l'output di un comando su diversi file separati da spazi come mostrato nella sintassi seguente.
$ comando | tee file1 file2 file3 . . .
Nell'esempio seguente, abbiamo invocato il comando hostnamectl per stampare il nome host del nostro sistema tra gli altri dettagli e salvare l'output standard su due file file1.txt e file2.txt
$ hostnamectl | tee file1.txt file2.txt
Ancora una volta, puoi confermare l'esistenza dell'output nei due file usando il comando cat come mostrato:
$ cat file1.txt $ cat file2.txt
Esempio 3) Sopprime l'output del comando tee
Se vuoi nascondere o sopprimere il comando tee dalla stampa dell'output sullo schermo, reindirizza l'output a /dev/null come mostrato:
$ comando | tee> /dev/null
Ad esempio,
$ df -Th | tee file4.txt > /dev/null
Esempio 4) Aggiungi l'output a un file con il comando tee
Per impostazione predefinita, il comando tee sovrascrive il contenuto di un file. Per aggiungere l'output e impedire la cancellazione del contenuto corrente, utilizzare le opzioni -a o -append.
$ comando | tee -un file
Nel secondo comando, come mostrato, abbiamo aggiunto il comando output of date a file1.txt che contiene già le informazioni sui dispositivi USB presenti nel sistema.
$ date | tee -a file1.txt
Esempio 5) Usa tee insieme al comando sudo
Supponiamo che come utente sudo, desideri scrivere su un file di proprietà dell'utente root. Naturalmente, qualsiasi operazione con privilegi elevati richiederà di richiamare l'utente sudo prima del comando.
Per ottenere ciò, anteponi semplicemente il comando tee con sudo come mostrato di seguito.
$ echo "10.200.50.20 db-01" | sudo tee -a /etc/hosts/
Quindi, tee riceve l'output del comando echo a sinistra e lo eleva usando il comando sudo che alla fine aggiunge l'output al file.
Esempio 6) Reindirizzare l'output di un comando a un altro usando il comando tee
Usando il comando tee, possiamo facilmente reindirizzare l'output di un comando a un altro comando. Qui l'output del primo comando fungerà da input per il secondo comando. L'esempio è mostrato di seguito:
$ grep 'root' /etc/passwd | tee /tmp/passwd.tmp | wc -l 2 $ cat /tmp/passwd.tmp root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin $
Esempio 7) Salvare le modifiche in un file all'interno dell'editor vi con il comando tee
Supponiamo che tu stia lavorando come utente non root e stai apportando modifiche al file di proprietà di root e ti dimentichi di mettere sudo davanti al comando e ora vuoi salvare le modifiche, l'esempio è mostrato di seguito:
$ vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.1.60 mail.linuxtechi.com 192.168.1.50 ns.linuxtechi.com 192.168.1.40 pxe.linuxtechi.com
Durante il salvataggio delle modifiche al file, riceverai un messaggio di sola lettura,
Ora per salvare le modifiche al file /etc/hosts all'interno dell'editor vi, esegui
:w !sudo maglietta %
Ti verrà chiesto di inserire la password dell'utente, se l'utente ha i diritti sudo, le modifiche verranno salvate.
Esempio 8) Ignora il segnale di interruzione mentre usi il comando tee
L'uso dell'opzione '-i' nel comando tee può ignorare il segnale di interruzione (CTRL-C), l'esempio è mostrato di seguito:
$ ping -c 5 linuxtechi.com | tee -i /tmp/pingtest.tmp
Esempio 9) utilizzo del comando tee nello script della shell
Il comando Tee è anche usato frequentemente negli script di shell, uno degli esempi più comuni è elencato di seguito:
$ vi basic-script.sh #!/bin/bash LOGFILE=/tmp/basic-logs-$(date +%d%m%Y) FLAVOR=$(cat /etc/*-release | grep -w 'NAME=' | cut -d"=" -f2 | awk '{print $1}'| sed 's/"//g') if [ $FLAVOR == CentOS ]; then dmesg | grep -i 'error' | tee -a $LOGFILE grep -i 'installed' /var/log/dnf.log | tee -a $LOGFILE else echo 'do nothing' fi
Come possiamo vedere nello script della shell Linux sopra, stiamo usando il comando tee per aggiungere gli output di due comandi a un file di registro solo se il sistema operativo è CentOS.
Conclusione
Questo conclude l'argomento di oggi. Sentiti libero di valutare. Il tuo feedback è il benvenuto. In questa guida abbiamo trattato il comando tee di Linux.