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.