Quando si lavora con il terminale in Linux, sono disponibili molte utilità da riga di comando per semplificarti la vita. Una di queste utilità è Tee
. In questa breve guida impareremo cos'è Tee e l'uso del comando Tee in Linux con esempi pratici.
Introduzione al comando Tee
Il tee è una semplice utilità della riga di comando che accetta l'input e scrive l'output in un file e in un output standard (ad es. Terminale). Il comando Tee verrà utilizzato principalmente negli script di shell quando si desidera reindirizzare l'output su più file ed elaborare ulteriormente l'output.
Il comando Tee fa parte di GNU coreutils
, quindi viene preinstallato con tutte le distribuzioni Linux.
Per verificare se il comando tee è disponibile nella tua distribuzione Linux, esegui il comando seguente:
$ which tee /usr/bin/tee
Per verificare la versione tee, puoi utilizzare il --version
bandiera.
$ tee --version tee (GNU coreutils) 8.32
Visualizza la guida del comando tee
Se non hai mai usato tee command, è buona norma iniziare con la sezione della guida di tee command.
Puoi accedere alla pagina man del comando tee per saperne di più su questa utility.
$ man tee
Puoi anche passare il --help
argomento per tee comando per visualizzare il suo manuale di aiuto.
$ tee --help
Sintassi del comando Tee
La sintassi tipica del comando Tee è riportata di seguito:
tee [OPZIONE]… [FILE]…
Accetta i flag e il nome del file in cui verrà reindirizzato l'output.
Ci sono due importanti flag che utilizzerai principalmente con il comando tee.
-a
,--append
flag :Aggiungi ai file.-i
,-ignore-interrupts
flag :Ignora i segnali di interruzione.
Ora permettetemi di mostrarvi alcuni esempi di comando tee in Linux.
Esempi di comandi Linux Tee per principianti
Come già affermato, il comando tee accetterà l'input e stamperà l'output sul terminale, nonché un file che verrà passato come argomento.
Nell'esempio seguente, il comando tee riceve input da echo
comando e stampa l'output sul terminale e su hello.txt
file.
$ echo "Welcome to OSTechNix" | tee hello.txt Welcome to OSTechNix
Controlliamo il contenuto di hello.txt
file:
$ cat hello.txt Welcome to OSTechNix
Usa il comando tee con l'operatore Pipe
Il comando Tee non serve solo a stampare l'input standard sul terminale, ma anche a inviarlo a un altro programma per un'ulteriore elaborazione.
Per lo più il comando tee verrà utilizzato in combinazione con pipe
(|) operatore negli script di shell.
Dai un'occhiata all'esempio qui sotto.
$ echo "Hello world" | tee hello.txt | rev dlrow olleH
$ cat hello.txt Hello world
Lascia che ti spieghi cosa succede quando esegui il comando precedente.
- L'
echo
il comando invierà il suo output"Hello World"
come input per iltee
comando attraverso la pipe. Tee
il comando memorizzerà l'output nel file specificatohello.txt
.- Invece di stampare l'output sul terminale, che è il comportamento predefinito, il
tee
passaggio di comando"Hello World"
stringa come input perrev
comando che stampa la stringa in ordine inverso .
Ecco un altro esempio.
Il comando seguente crea una directory chiamata "otechnix", conta il numero di caratteri in "otechnix" e stampa "otechnix" sul terminale:
$ echo "ostechnix" | tee >(xargs mkdir) >(wc -c)
Avviso: Potrebbe essere necessario utilizzare sudo
con il tee
comando se crei file in directory a cui non hai accesso come utente normale.
Trasferimento di più file
Il comando Tee accetta anche più file come argomenti e memorizza l'output in ogni file.
$ echo "Welcome to OSTechNix" | tee hello1.txt hello2.txt hello3.txt Welcome to OSTechNix
Controlliamo il contenuto di ogni file:
$ cat hello1.txt
Welcome to OSTechNix
$ cat hello2.txt
Welcome to OSTechNix
$ cat hello3.txt
Welcome to OSTechNix
Sostituisci e aggiungi
Il comportamento predefinito della tee
comando è che cercherà se il file è già disponibile e sovrascriverà i dati con quello nuovo. Se il file non è disponibile, creerà il file.
Se desideri aggiungere i dati invece di sovrascrivere, usa -a
o --append
bandiera.
$ cat hello1.txt Welcome to OSTechNix
$ echo "I am using PoP_OS Cosmic Desktop" | tee -a hello1.txt I am using PoP_OS Cosmic Desktop
$ cat hello1.txt Welcome to OSTechNix I am using PoP_OS Cosmic Desktop
Combinazione di Tee con operatore di reindirizzamento
Se non desideri stampare l'output sul terminale ma semplicemente scrivere l'output su file, puoi quindi combinare l'operatore di reindirizzamento con il comando tee.
Questo è un caso ideale solo se il comando tee arriva per ultimo nella catena di pipe. Se l'output del tee viene reindirizzato a un altro comando come come
mostrato nel primo esempio, non è necessario utilizzare l'operatore di reindirizzamento.
$ echo "I am using PoP_OS Cosmic Desktop" | tee -a hello1.txt &> /dev/null
Segnali di interruzione
Il comando Tee ha la possibilità di interrompere SIGINT usando il -i
o --ignore-interrupts
bandiera.
Significato - se premi CTRL + C
nel tuo terminale mentre esegui il comando tee con -i
flag, il comando tee interromperà il segnale ed eseguirà un'uscita aggraziata leggendo EOF dal PIPE.
$ { echo Hello world;sleep 10; } | tee -i hello1.txt
Hello world
^C
$ cat hello1.txt
Hello world
Riepilogo
Tee è un semplice programma che potresti non utilizzare quotidianamente. Tuttavia, conoscere il comando tee tornerà utile quando si scrivono script di shell. Spero che questo aiuti.