Il comando tee legge dallo standard input e scrive sia nello standard output che nei file.
Il risultato è che puoi vedere l'output del tuo comando e allo stesso tempo salvarlo in un file.
In altre parole, hai un ingresso che viene incanalato su due uscite.
Tutto questo ha più senso se hai familiarità con il concetto di reindirizzamento in Linux.
Il comando prende il nome dal connettore a T utilizzato nei settori dell'elettricità, degli impianti idraulici e di altri settori. Si chiamano tee perché assomigliano alla lettera "T".
Ora che hai compreso lo scopo del comando tee, vediamo come utilizzare il comando tee in Linux.
Esempi di comando Tee
Il comando tee ha una sintassi semplice:
tee [OPTION] [FILE]
Ricorda che tee legge dallo standard input, quindi quasi sempre lo utilizzerai nella coniugazione di un altro comando.
Lascia che ti mostri alcuni esempi.
1. Visualizza l'output del comando e salvalo in un file
Prendiamo un caso di base in cui vuoi contare il numero di righe in un file. Vuoi vedere quante righe ci sono nel file e salvare quel numero in un altro file.
[email protected]:~$ wc -l agatha.txt | tee count.txt
20 agatha.txt
Il conteggio dei file non esiste, quindi verrà creato un nuovo file denominato conteggio. Se vedi il contenuto del conteggio dei file, vedrai lo stesso output che hai visto sul display.
[email protected]:~$ cat count.txt
20 agatha.txt
Nota:per impostazione predefinita, il comando tee sovrascriverà il contenuto del file. Se vuoi puoi usare l'opzione append -a con esso:
wc -l agatha.txt | tee -a count.txt
2. Visualizza l'output del comando e salvalo su più file
Se vuoi salvare l'output del comando su più file, puoi farlo anche con il comando tee. Devi solo specificare i file.
[email protected]:$ wc -l agatha.txt | tee count1.txt count2.txt
20 agatha.txt
Puoi verificare che lo stesso output sia stato memorizzato nei due file citati.
[email protected]:~$ cat count1.txt count2.txt
20 agatha.txt
20 agatha.txt
Spero che tu sapessi che puoi vedere più file insieme al comando cat in Linux.
3. Analizza l'output del comando in un altro comando salvandolo in un file
Non è sempre necessario vedere l'output del comando. Poiché è un output standard, puoi inviarlo tramite pipe a un altro comando.
Prendi ad esempio il comando seguente.
[email protected]:~$ ls -l | tee count.txt | wc -l
7
Quello che succede qui è che l'output del comando 'ls -l' viene reindirizzato al comando tee. Ora il comando tee memorizza l'output di "ls -l" nel file count.txt ma invece di visualizzare questo output, viene reindirizzato al comando "wc -l" che conta il numero di righe.
L'output che vedi in questo caso è l'output del comando 'wc -l'. L'output del comando 'ls -l' è memorizzato nel file count.txt.
[email protected]:~$ cat count.txt
total 20
-r--r--r-- 1 abhishek abhishek 456 Dec 11 21:29 agatha.txt
-rw-r--r-- 1 abhishek abhishek 0 Jan 10 16:03 count.txt
-rw-r--r-- 1 abhishek abhishek 356 Dec 17 11:39 file1.txt
-rw-r--r-- 1 abhishek abhishek 356 Dec 17 09:59 file2.txt
-rw-r--r-- 1 abhishek abhishek 356 Dec 11 21:35 sherlock.txt
drwxr-xr-x 3 abhishek abhishek 4096 Jan 4 20:10 target
Conclusione
Usare il comando tee dipende davvero dalla tua immaginazione e dalla tua situazione. Lo trovo utile quando devo analizzare un output lungo come un file di registro. Vederlo in tempo reale e memorizzarlo in un file per riferimenti futuri aiuta un po' e mi fa risparmiare un po' di tempo.
Spero che ti siano piaciuti gli esempi di comandi tee che ho elencato qui. Se pensi a un modo davvero fantastico per usare questo comando, condividilo con il resto di noi nella sezione commenti.