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.