Introduzione
In Bash, ci sono diversi modi per aggiungere testo a un file. Questo articolo spiega alcuni di essi.
Per aggiungere testo a un file, è necessario disporre delle autorizzazioni di scrittura. Altrimenti, riceverai un errore di autorizzazione negata.
Utilizzare l'operatore di reindirizzamento >>
Il reindirizzamento consente di acquisire l'output da un comando e inviarlo come input a un altro comando o file. L'operatore di reindirizzamento >>
accoda l'output a un determinato file.
Esistono numerosi comandi che è possibile utilizzare per stampare il testo sull'output standard e reindirizzarlo al file, con echo
ed printf
essere i più utilizzati.
Per aggiungere testo a un file, specificare il nome del file dopo l'operatore di reindirizzamento:
echo "this is a new line" >> file.txt
Se utilizzato con l'opzione -e
, il comando echo
interpreta i caratteri con escape backslash come newline \n
:
echo -e "this is a new line \nthis is another new line" >> file.txt
Se si desidera produrre output più complessi, utilizzare il comando printf
che consente di specificare la formattazione dell'output:
printf "Hello, I'm %s.\n" $USER >> file.txt
È possibile aggiungere l'output di qualsiasi comando a un file. Ecco un esempio con il comando date
:
date +"Year: %Y, Month: %m, Day: %d" >> file.txt
Quando si aggiunge un file a un reindirizzamento, fare attenzione a non utilizzare l'operatore >
che sovrascrive un file esistente.
Utilizzare il comando tee
tee
è un'utilità della riga di comando in Linux che legge dallo standard input e scrive sia nello standard output sia in uno o più file contemporaneamente.
Per impostazione predefinita, il comando tee
sovrascrive il file specificato. Per aggiungere l'output al file, utilizzare tee
con l'opzione -a
(--append
):
echo "this is a new line" | tee -a file.txt
Se non si desidera che tee
scriva nell'output standard, reindirizzarlo a /dev/null
:
echo "this is a new line" | tee -a file.txt >/dev/null
Il vantaggio di utilizzare il comando tee
invece dell'operatore >>
è che tee
consente di aggiungere testo a più file contemporaneamente e di scrivere su file di proprietà di altri utenti insieme sudo
.
Per aggiungere testo a un file per il quale non si dispone delle autorizzazioni di scrittura, anteporre sudo
prima del comando tee
come mostrato di seguito:
echo "this is a new line" | sudo tee -a file.txt
tee
riceve l'output del comando echo
, e con le autorizzazioni sudo scrive nel file.
Per aggiungere testo a più di un file, specificare i file come argomenti per il comando tee
:
echo "this is a new line" | tee -a file1.txt file2.txt file3.txt
Conclusione
In Linux, per aggiungere testo a un file, utilizzare l'operatore di reindirizzamento >>
o il comando tee
.