GNU/Linux >> Linux Esercitazione >  >> Linux

Spiegazione del comando tee di Linux (con esempi)

Quando si eseguono comandi di base sul terminale, l'output viene solitamente stampato sul terminale, ovvero standard out. Ma cosa accadrebbe se potessi anche salvare l'output in un file e stamparlo come standard? Questo è ciò che fa il comando tee. Il comando Linux tee legge da stdin ( standard input ) e quindi scrive su stdout ( standard output ) e su uno o più file.

Sintassi di base del comando tee

Il comando tee ha la seguente sintassi.

comando $ | tee [ opzioni ] file/i

Esaminiamo ora alcuni esempi di utilizzo del comando tee.

Uso di base del comando tee

Supponiamo di voler stampare la memoria e scambiare l'utilizzo utilizzando free comando e salva l'output in un file chiamato memory_usage.txt . Il comando tee verrebbe invocato come segue.

$ free -h | tee memory_usage.txt

Il comando tee legge dal comando, salva l'output in memory_usage.txt file, quindi lo stampa su standard out.

Per confermare che l'output è stato salvato in memory_usage.txt file esegui il comando cat come mostrato.

$ cat memory_usage.txt

Scrivi l'output su più file

Inoltre, puoi salvare l'output su più file come mostrato

comando $ | tee [ opzioni ] file1 file2 …

Nel comando seguente, la stringa "Hey, Welcome to Linux" viene salvato nei due file di testo:file1.txt e file2.txt

$ echo Hey, Welcome to Linux | tee file1.txt file2.txt

Aggiungi contenuto a un file

Di solito, il comando tee sovrascrive un file e questo non è sempre auspicabile in quanto può cancellare i dati esistenti che sono cruciali. Per fortuna, puoi usare -a opzione per aggiungere testo a un file. Proviamolo.

Per prima cosa, scriveremo l'output del tempo di attività comando al stats.txt file come mostrato.

$ tempo di attività | tee stats.txt

Usa il gatto comando per verificarlo.

$ cat stats.txt

Successivamente, aggiungeremo l'output di free -h comando che stampa la nostra memoria e scambia l'utilizzo nel file.

$ free -h | tee -a stats.txt

Ancora una volta, verifica i contenuti di stats.txt file. Questa volta, il file conterrà l'output dei due comandi come indicato nello screenshot qui sotto. Questo perché abbiamo aggiunto l'output di free -h comando al stats.txt file e quindi il testo esistente non è stato influenzato.

Sopprimi l'output del comando tee

Se non desideri avere l'output del tee comando stampato su standard out, puoi reindirizzarlo a /dev/null che è un dispositivo speciale che scarta le informazioni viene alimentato ad esso.

Prendi l'esempio seguente in cui stiamo stampando l'output di df -Th comando al file di testo ma sopprimendo l'output sul terminale.

$ df -Th | tee disk_usage.txt >/dev/null

Lascia che il comando tee ignori gli interrupt

A volte, potresti voler interrompere un comando che è continuamente in esecuzione. Quando ciò accade, potresti considerare di far uscire il comando tee con grazia anche dopo l'interruzione del programma. Per farlo, usa -i o –ignora-interruzioni opzione fornita nella sintassi mostrata.

comando $ | tee -i nomefile

Il comando ping seguente invia continuamente richieste ping al DNS di Google (8.8.8.8). Abbiamo interrotto il comando dopo 4 richieste di ping successive. Per la t-shirt comando per uscire con grazia, invocare -i opzione.

$ ping 8.8.8.8 | tee -i ping_stats.txt

Senza -i opzione, l'output e il riepilogo delle statistiche non verranno stampati.

Usa il comando tee con sudo

Quando si modificano i file di proprietà dell'utente root o di un utente di accesso diverso, il semplice utilizzo del comando tee senza invocare il comando sudo genererà un errore.

Nell'esempio seguente, stiamo creando un nuovo repository chiamato anydesk-stable.list per l'applicazione AnyDesk in /etc/apt/sources.list.d percorso che è una riserva per l'utente root.

$ echo "deb http://deb.anydesk.com/ all main" | tee /etc/apt/sources.list.d/anydesk-stable.list

Come previsto, abbiamo riscontrato un errore "permessi negati" perché non abbiamo i permessi per creare o modificare un file in quel percorso.

La soluzione è precedere tee con il comando sudo come mostrato.

$ echo "deb http://deb.anydesk.com/ all main" | sudo tee /etc/apt/sources.list.d/anydesk-stable.list

In questa occasione, il comando ha successo dopo aver posizionato sudo prima di tee.

Richiedi aiuto con il comando tee

Per ulteriori opzioni di comando e assistenza nell'utilizzo del comando tee, esegui il comando seguente.

$ tee --help

Inoltre, esplora le pagine man come mostrato

$ man tee

Per verificare la versione, esegui:

$ tee --version

Riepilogo

Tutto questo riguarda il comando tee di Linux. In particolare, il comando legge da standard in ( stdin ) e successivamente scrive su standard out ( stdout ) e file.


Linux
  1. Comando wc Linux con esempi

  2. Comando Tee Linux con esempi

  3. Comando di spegnimento di Linux spiegato con esempi

  4. Comando Traceroute di Linux, spiegato con esempi

  5. Comando JQ in Linux con esempi

Il comando Tr in Linux spiegato con esempi

w Comando spiegato con esempi in Linux

Comando Linux Cat spiegato con esempi

Il comando Tee in Linux spiegato con esempi

Esempi di comandi tee Linux

Spiegazione del comando csplit di Linux (con esempi)