Come aggiungere al file con Bash - Append

9 feb 2024 3 min di lettura
Come aggiungere al file con Bash - Append
Indice dei contenuti

Introduzione

Quando lavori con Bash, potrebbero esserci momenti in cui devi aggiungere del testo a un file. Fortunatamente, ci sono diversi modi per eseguire questo compito. Questo articolo ne spiega alcuni.

Per aggiungere testo a un file, è necessario disporre dei permessi di scrittura su di esso. In caso contrario, riceverai un errore di autorizzazione negata.

Aggiungi a un file utilizzando 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 aggiunge l'output a un determinato file.

Esistono numerosi comandi che è possibile utilizzare per stampare il testo sull'output standard e reindirizzarlo al file. I due comandi più comunemente usati per questo scopo sono echoprintf.

Per aggiungere testo a un file, esegui il comando che stampa il testo e specifica il nome del file dopo l'operatore di reindirizzamento:

echo "this is a new line" >> file.txt

Se utilizzato con l'opzione -e, il echo comando interpreta i caratteri con barra rovesciata come newline \n:

echo -e "this is a new line \nthis is another new line" >> file.txt

Per produrre un output più complesso, è possibile utilizzare il comando printf , che consente di specificare la formattazione dell'output:

printf "Hello, I'm %s.\n" $USER >> file.txt

Un altro modo per aggiungere testo a un file è utilizzare il documento Here (Heredoc). È un tipo di reindirizzamento che ti consente di passare più righe di input a un comando.

Ad esempio, puoi passare il contenuto al comando cat  e aggiungerlo a un file:

cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as: $(whoami)
EOF

È 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 a un file utilizzando un reindirizzamento, fare attenzione a non utilizzare l' >operatore per sovrascrivere un file esistente importante.

Aggiungi a un file utilizzando il teecomando

teeè un'utilità della riga di comando Linux che legge dallo standard input e scrive sia sullo standard output che su uno o più file contemporaneamente.

Per impostazione predefinita, il comando tee sovrascrive il file specificato. Per aggiungere l'output al file utilizzare teecon l' opzione -a(--append):

echo "this is a new line"  | tee -a file.txt

Se non vuoi teescrivere sull'output standard, reindirizzalo a /dev/null:

echo "this is a new line"  | tee -a file.txt >/dev/null

Il vantaggio di utilizzare il comando tee rispetto >>all'operatore è che teeconsente di aggiungere contemporaneamente testo a più file e scrivere su file di proprietà di altri utenti insieme a sudo.

Per aggiungere testo a un file per il quale non disponi dei permessi di scrittura, anteponilo sudo come teemostrato di seguito:

echo "this is a new line" | sudo tee -a file.txt

teericeve l'output del comando echo, eleva le autorizzazioni sudo e scrive nel file.

Per aggiungere testo a più di un file, specificare i file come argomenti del comando tee:

echo "this is a new line"  | tee -a file1.txt file2.txt file3.txt

Conclusione

Se lavori con Linux e devi aggiungere del testo a un file esistente, hai un paio di opzioni. Un modo è utilizzare l'operatore >> di reindirizzamento, che aggiungerà il testo alla fine del file senza sovrascrivere alcun contenuto esistente. Un'altra opzione è utilizzare il teecomando, che non solo aggiunge il testo al file, ma lo visualizza anche sullo schermo mentre viene aggiunto.

Se hai domande o feedback, sentiti libero di lasciare un commento

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.