Come aggiungere alla fine di un file in Linux
In questo tutorial, impariamo diversi modi per aggiungere testo alla fine di un file in Linux. Puoi ottenere ciò utilizzando diversi metodi in Linux, ma il più semplice è reindirizzare l’output del comando al nome file desiderato. Utilizzando il carattere >> è possibile generare l’output di qualsiasi comando in un file di testo.
Altri modi in cui questo può essere fatto è usare strumenti Linux come tee, awk e sed.
Reindirizza il comando o l’output dei dati alla fine del file
Ogni sistema operativo basato su Unix ha un concetto di “una posizione di uscita predefinita”. Tutti lo chiamano “standard output”, o “stdout”, pronunciato standard out. La tua shell (probabilmente bash o zsh) controlla costantemente quella posizione di uscita predefinita. Quando la tua shell vede nuovi risultati lì, li stampa sullo schermo in modo che tu possa vederli.
Possiamo reindirizzare quell’output a un file usando l’operatore >>.
La procedura è la seguente:
Aggiungi testo alla fine del file usando eco comando:
echo 'sample text line' >> filename.txt
Aggiungi l’output del comando alla fine del file:
command >> filename.txt
Aggiunta di righe alla fine del file
Possiamo aggiungere righe di testo utilizzando questo carattere di reindirizzamento >> oppure possiamo scrivere dati e risultati di comando in un file di testo. Utilizzando questo metodo, il file verrà creato se non esiste.
Per esempio:
$ echo "sample line" >> test.txt
$ cat test.txt
sample line
$ echo "sample line 2" >> test.txt
$ cat test.txt
sample line
sample line 2
Aggiunta dell’output dei dati del comando alla fine del file
È inoltre possibile aggiungere dati o eseguire il comando e aggiungere risultati al file desiderato. In questo esempio useremo date per aggiungere la data corrente a un file, il comando uname – che stamperà la versione del kernel del sistema Linux che stiamo usando, e infine S comando che visualizza la struttura della directory corrente e l’elenco dei file.
È possibile utilizzare qualsiasi comando in grado di inviare l’output a un terminale, il che significa quasi tutti gli strumenti della riga di comando di Linux.
$ date >> test.txt
$ cat test.txt
sample line
sample line 2
Tue Jun 25 20:28:51 UTC 2019
$ uname -r >> test.txt
$ cat test.txt
sample line
sample line 2
Tue Jun 25 20:28:51 UTC 2019
3.13.0-170-generic
$ ls >> test.txt
$ cat test.txt
sample line
sample line 2
Tue Jun 25 20:28:51 UTC 2019
3.13.0-170-generic
test.txt
Metodi alternativi
Vediamo come aggiungere utilizzando l’utility Linux tee, awk e sed.
Utilizzando lo strumento della riga di comando tee
Il comando Tee legge l’input standard e lo scrive sia sull’output standard che su uno o più file. L’ordine prende il nome dal divisore a T utilizzato negli impianti idraulici. Interrompe l’output di un programma in modo che possa essere visualizzato e salvato in un file.
$ tee -a test.txt <<< "appended line of text"
vagrant@ubuntu-trusty-64:~$ cat test.txt
appended line of text
Utilizzando lo strumento a riga di comando awk
Awk è un’utilità che consente a un programmatore di scrivere programmi piccoli ma efficienti sotto forma di istruzioni che definiscono modelli di testo da cercare in ogni riga di un documento e l’azione da intraprendere quando viene trovata una corrispondenza in un documento. la linea. Awk è utilizzato principalmente per la scansione e l’elaborazione di modelli.
$ awk 'BEGIN{ printf "another text line appended" >> "test.txt" }'
vagrant@ubuntu-trusty-64:~$ cat test.txt
another text line appended
Utilizzando lo strumento da riga di comando sed
Il comando Sed in Linux è l’acronimo di stream editor e può eseguire molte funzioni su un file come cercare, trovare e sostituire, inserire o eliminare. Usando sed puoi modificare i file senza nemmeno aprirli, il che è un modo molto più veloce per trovare e sostituire qualcosa nel file.
$ sed -i '$a yet another text line' test.txt
vagrant@ubuntu-trusty-64:~$ cat test.txt
yet another text line
Aggiungi più righe a un file
Esistono diversi modi per aggiungere più righe a un file contemporaneamente.
Naturalmente, puoi aggiungere le righe una per una:
$ echo "line 1" >> result.txt
$ echo "line 2" >> result.txt
L’opzione successiva è inserire una nuova riga nel terminale:
echo "line 1
line 2
line 3" >> result.txt
Un altro modo è aprire un file e scrivere righe fino a quando non si entra in EOT:
$ cat <<EOT >> result.txt
line 1
line 2
EOT
Conclusione
Sebbene esistano diversi modi per aggiungere righe di testo o dati e l’output del comando a un file, ho scoperto che il modo più semplice è utilizzare il carattere di reindirizzamento >>. Esistono modi per aggiungere del testo alla fine di un numero di riga specifico in un file o nel mezzo di una riga utilizzando espressioni regolari, ma ne parleremo in un altro articolo.
Facci sapere quale metodo aggiungere alla fine del file che ritieni sia il migliore nella sezione dei commenti.