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 echo
e printf
.
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 tee
comando
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 tee
con l' opzione -a
(--append
):
echo "this is a new line" | tee -a file.txt
Se non vuoi tee
scrivere 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 tee
consente 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 tee
mostrato di seguito:
echo "this is a new line" | sudo tee -a file.txt
tee
riceve 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 tee
comando, 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