Introduzione

Il comando tee legge dallo standard input e scrive contemporaneamente sia sullo standard output che su uno o più file. tee viene utilizzato principalmente in combinazione con altri comandi tramite piping.

In questo tutorial, tratteremo le basi dell'uso del comando tee.

Sintassi del comando Tee

La sintassi per il comando tee è la seguente:

tee [OPTIONS] [FILE]
  • OPTIONS:
  • -a( --append) - Non sovrascrivere i file invece aggiungerli ai file dati.
  • -i( --ignore-interrupts) - Ignora i segnali di interruzione.
  • Utilizzare tee --help per visualizzare tutte le opzioni disponibili.
  • FILE_NAMES - Uno o più file. Ognuno dei quali vengono scritti i dati di output.

Come usare il comando Tee

L'uso più basilare del comando tee è visualizzare l'output standard  stdout di un programma e scriverlo in un file.

Nel seguente esempio, stiamo usando il comando df per ottenere informazioni sulla quantità di spazio disponibile su disco nel file system. L'output viene reindirizzato al comando tee, che visualizza l'output sul terminale e scrive le stesse informazioni nel file disk_usage.txt.

df -h | tee disk_usage.txt
Filesystem      Size  Used Avail Use% Mounted on
dev             7.8G     0  7.8G   0% /dev
run             7.9G  1.8M  7.9G   1% /run
/dev/nvme  212G  159G   43G  79% /
tmpfs           7.9G  357M  7.5G   5% /dev/shm
tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
tmpfs           7.9G   15M  7.9G   1% /tmp
/dev/nvme  511M  107M  405M  21% /boot
/dev/sda1       459G  165G  271G  38% /data
tmpfs           1.6G   16K  1.6G   1% /run/user/120

Puoi visualizzare il contenuto del file disk_usage.txt usando il comando cat .

Scrivi su più file

Il comando tee può anche scrivere su più file. Per fare ciò, specifica un elenco di file separati da spazio come argomenti:

command | tee file1.out file2.out file3.out

Aggiungi al file

Per impostazione predefinita, il comando tee sovrascriverà il file specificato. Utilizzare l' opzione -a( --append) per aggiungere l'output al file:

command | tee -a file.out

Ignora interruzione

Per ignorare gli interrupt usa l'opzione -i (–ignore-interrupt). Ciò è utile quando si arresta il comando durante l'esecuzione di CTRL+C.

command | tee -i file.out

Nascondi l'output

Se non si desidera far scrivere al comando tee nell'output standard, è possibile reindirizzarlo a /dev/null:

command | tee file.out >/dev/null

Utilizzo di tee in congiunzione con sudo

Supponiamo che tu voglia scrivere su un file di proprietà di root come utente sudo. Il seguente comando fallirà perché il reindirizzamento dell'output non viene eseguito da sudo. Il reindirizzamento viene eseguito come utente non privilegiato.

sudo echo "newline" > /etc/file.conf

L'output sarà simile al seguente:

bash: /etc/file.conf: Permission denied

Basta anteporre sudo prima del comando tee come mostrato di seguito:

echo "newline" | sudo tee -a /etc/file.conf

tee riceverà l'output del comando echo , elevare per sudo autorizzazioni e scrivere nel file.

L'utilizzo di tee insieme al comando sudo ti permetterà di scrivere nei file di proprietà di altri utenti.

Conclusione

Il comando tee legge l'input standard e lo scrive nell'output standard e in uno o più file.