Aggiungi testo a un file usando Bash

  1. Aggiungi testo a un file con l’operatore di reindirizzamento >>
  2. Aggiungi testo a un file con il comando tee

Possiamo aggiungere del testo a un file usando l’operatore di reindirizzamento (>>) e il comando tee.

Dobbiamo assicurarci di avere autorizzazioni sufficienti per aggiungere testo al file. Se non disponiamo di autorizzazioni sufficienti, potremmo ricevere un errore di autorizzazione negata.

Aggiungi testo a un file con l’operatore di reindirizzamento >>

L’operatore di reindirizzamento >> preleva l’output dai comandi bash e aggiunge l’output a un altro file. Ci sono molti modi per stampare il testo sullo standard output, tuttavia echo e printf sono i comandi più popolari.

Per aggiungere il testo a un file, scriviamo un comando per stampare il testo usando uno qualsiasi dei comandi di output e poi aggiungiamo l’operatore >> al comando seguito dal nome del file in cui il testo deve essere aggiunto.

echo "Hello World" >> abc.txt

Questo aggiungerà il testo Hello World alla fine del file abc.txt.

Se il file non esiste nella directory di lavoro corrente, il comando creerà un file vuoto e scriverà il testo Hello World nel file.

Per interpretare i caratteri della sequenza di escape come \n usiamo l’opzione -e con il comando echo.

echo -e "Hello World! \nThis is DelftStack" >> abc.txt

Questo aggiungerà il testo

Hello World!
This is DelftStack

al file abc.txt.

Per verificare se il testo è stato aggiunto o meno, possiamo usare il comando cat per visualizzare il contenuto del file.

cat abc.txt

Produzione:

Hello World! 
This is DelftStack

Se il testo è stato aggiunto, possiamo vedere il testo alla fine del file.

Se vogliamo più testo formattato, possiamo usare il comando printf per produrre un output più formattato.

printf "The path of shell interpreter is %s\n" $SHELL >> abc.txt

Aggiunge il testo The path of shell interpreter is /bin/bash al file abc.txt.

Aggiungi testo a un file con il comando tee

tee è un’utilità della riga di comando che prende l’input dallo standard input e lo scrive su uno o più file e lo standard output simultaneamente.

Per impostazione predefinita, il comando tee sovrascrive il contenuto dei file. Per aggiungere semplicemente il testo alla fine del file, usiamo l’opzione -a o --append con il comando.

echo "Hello World!" | tee -a abc.txt

Produzione:

Hello World!

Aggiunge Hello World! nel file abc.txt e scrive anche il testo sullo standard output nel terminale.

Se otteniamo un errore di autorizzazione negata durante l’aggiunta del testo a un file, possiamo aggiungere la parola chiave sudo prima del comando tee.

echo "Hello World!" | sudo tee -a abc.txt

Se non vogliamo vedere l’output standard, possiamo reindirizzare l’output a /dev/null

 echo "Hello World!"  | tee -a abc.txt >/dev/null

Un vantaggio dell’utilizzo del comando tee è che possiamo scrivere il testo su più file contemporaneamente usando il comando tee. Per scrivere il testo su più file, possiamo semplicemente elencare tutti i file separati da uno spazio.

echo "Hello World!" | sudo tee -a abc.txt backup.txt

Aggiunge il testo a entrambi i file abc.txt e backup.txt simultaneamente.