GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare il comando tee di Linux

Introduzione

Quando l'utente esegue un comando in una shell interattiva Linux, l'output viene visualizzato nel terminale di testo. Tuttavia, esistono modi per modificare questo comportamento utilizzando comandi shell aggiuntivi collegati in una pipeline.

In questo tutorial imparerai come utilizzare il comando tee in Linux per gestire l'output di un comando.

Prerequisiti

  • Un sistema che esegue Linux
  • Accesso alla riga di comando o al terminale
  • Privilegi di sudo

Cosa fa tee Command in Linux?

La tee il comando legge lo standard input (stdin) e lo scrive sia nello standard output (stdout) che in uno o più file. tee di solito fa parte di una pipeline e qualsiasi numero di comandi può precederla o seguirla.

Comandi tee in Linux con esempi

La tee comando viene utilizzato da solo o con opzioni aggiuntive. Le sezioni seguenti elencano le opzioni disponibili e forniscono esempi di utilizzo dei comandi.

Utilizzo di base

La sintassi di base per il tee il comando è:

[command] | tee [options] [filename]

L'esempio seguente mostra l'uso di tee per creare un file che memorizza informazioni su un'interfaccia di rete fornendo lo stesso output nel terminale:

Il comando cat conferma che tee ha scritto correttamente l'output di ifconfig nel file example.txt :

Se il file utilizzato per il comando esiste già, tee sovrascrive il contenuto precedente del file.

Aggiungi al file specificato

La sovrascrittura del contenuto del file è il comportamento predefinito del tee comando. Usa l'argomento -a (o --append ) per aggiungere l'output del comando alla fine del file.

[command] | tee -a [filename]

Ad esempio, usa echo comando per aggiungere una riga di testo a un file:


Conferma l'aggiunta riuscita con il cat comando:

Scrivi su più file

Usa tee seguito da un numero qualsiasi di file per scrivere lo stesso output su ciascuno di essi:

[command] | tee [options] [filename1] [filename2]...

L'esempio seguente mostra la scrittura dell'output di echo comando su due file:

Il ls comando mostra che tee file creati con successo example1.txt e example2.txt .

Nascondi l'output

Per dire a tee per memorizzare l'output del comando in un file e saltare l'output del terminale, utilizzare la seguente sintassi:

[command] | tee [options] [filename] >/dev/null

Nell'esempio seguente, tee crea un file contenente i dati dell'interfaccia di rete, saltando lo standard output:

Reindirizza l'output di un comando a un altro

tee non deve essere l'ultimo comando nella pipeline. Usalo per inoltrare l'output a un altro comando:

[command] | tee [options] [filename] | [command]

Nell'esempio seguente, tee memorizza l'output di ls comando a example.txt e passa il contenuto di quel file al comando grep, che trova e visualizza tutte le istanze della parola "esempio":

Ignora gli interrupt

Per abilitare tee per uscire correttamente anche dopo che il comando precedente è stato interrotto, aggiungere l'argomento -i (o --ignore-interrupts ):

[command] | tee -i [filename]

L'esempio successivo mostra tee scrivendo l'output dal comando ping e completando l'azione con successo anche dopo ping viene interrotto con Ctrl+C :

Utilizzare tee con Sudo

Per abilitare tee per scrivere in un file di proprietà di root o in un file appartenente a un altro utente, inserisci il comando sudo subito prima di tee .

[command] | sudo tee [options] [filename]

L'esempio seguente mostra un tentativo non riuscito di scrivere nel sudoex.txt di proprietà della radice . Quando il sudo comando viene aggiunto, l'operazione viene completata:

Utilizzare tee in Vim Editor

Se apri e modifichi un file di proprietà di root in Vim senza usare sudo comando, il tentativo di salvare le modifiche produce un errore:

Per ignorare questo errore, digita quanto segue in Vim:

:w !sudo tee %

Dopo aver inserito il sudo password, Vim mostra un avviso ma scrive le modifiche nel file.

Diagnostica errori di scrittura su non pipe

Per istruire tee per stampare un messaggio di errore quando il processo non riesce, usa il -p argomento:

[command] | tee -p [filename]

L'azione predefinita di tee -p consiste nell'uscire e stampare il messaggio di errore immediatamente dopo aver rilevato l'errore durante la scrittura su una pipe. Per modificare il comportamento del comando in caso di errore di scrittura, utilizza il --output-error argomento, seguito dalla modalità che specifica il comportamento:

[command] | tee --output-error=[mode] [filename]

Ci sono quattro modalità possibili:

  • warn – diagnostica gli errori di scrittura su qualsiasi output.
  • warn-nopipe – diagnostica gli errori di scrittura su qualsiasi output non pipe.
  • exit – esce in caso di errori di scrittura su qualsiasi output.
  • exit-nopipe – esce in caso di errori di scrittura su qualsiasi output non pipe.

Usa il comando tee con lo script Bash

La tee comando si trova spesso negli script bash. Considera il seguente esempio:

Lo script sopra stampa il messaggio "Hello World" e memorizza l'output in un file di registro. L'esecuzione dello script crea un file di registro nel tmp cartella. Il log contiene l'output dello script:

Guarda i file di registro

La scrittura dell'output dello script in un file di registro viene in genere eseguita con > operatore:

./testbash.sh > testbash.log

Il comando sopra crea un file di registro ma non scrive nulla nell'output standard.

Usa tee per creare un file di registro e vedere l'output nel terminale:

./testbash.sh | tee testbash.log

Vedi Guida e informazioni sulla versione

Vedi la versione attuale della tee comando digitando:

tee --version

Per le istruzioni relative alla tee sintassi del comando e gli argomenti disponibili, utilizzare l'argomento della guida del comando:

tee --help

Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come usare il comando Su in Linux

  4. Come utilizzare il comando id in Linux

  5. Come utilizzare il comando "schermo" in Linux

Come utilizzare il comando Linux Top

Come utilizzare il comando fd sul sistema Linux

Come utilizzare il comando wget in Linux?

Come usare il comando xargs in Linux?

Come utilizzare il comando RPM in Linux

Come utilizzare il comando which in Linux