Come scrivere su un file in Bash

How Write File Bash

Una delle attività essenziali che svolgiamo mentre lavoriamo con gli script bash è leggere e scrivere file. In questa guida, ci concentreremo su come leggere i file in bash e su come modificarli.

Esistono diversi modi per leggere e scrivere un file in bash. Il modo più semplice è usare gli operatori > e >>.



  • > l'operatore sovrascriverà i dati esistenti
  • >> l'operatore aggiungerà i dati

Il formato generale dell'utilizzo degli operatori di reindirizzamento è:



Dati > Nome file
Dati >> Nome file

Comprendiamo la procedura di scrittura su un file con un esempio:



Come scrivere un file usando gli operatori di reindirizzamento

Come discusso in precedenza, l'approccio semplice e diretto della scrittura su un file utilizza gli operatori di reindirizzamento. Ad esempio, se si desidera modificare il testo di un file già esistente, creare prima un file di testo con il nome di fileprova.txt e scrivici qualcosa dentro:

Salva il file di testo.



Digita il comando indicato di seguito nel terminale:

$ echo Sovrascrivendo il testo esistente nel file > testfile.txt

L'eccessiva strizzatura può essere rischiosa; pertanto, è buona norma abilitare noclobber. L'impostazione di noclobber bloccherebbe qualsiasi sovrascrittura su qualsiasi file in uscita.

$ set –o noclobber
$ echo Sovrascrivendo il testo esistente nel file > testfile.txt

Ma se vuoi bypassare noclobber, usa il > | operatore invece di > :

$ echo Sovrascrivendo il testo esistente nel file >| fileprova.txt

Oppure puoi semplicemente disabilitare noclobber:

$ set + o noclobber

Ma questo comando rimuoverà la protezione da tutti i file.

L'output sopra indica che il testo esistente è stato sovrascritto. Ora usiamo il >> operatore:

$ echo Aggiunta di testo al file di testo esistente >> testfile.txt

buttato fuori non è sempre l'ideale da usare poiché non è possibile formattare il testo utilizzandolo, quindi utilizzare printf al posto di echo per formattare il testo come dimostrato nel seguente comando:

$ printf Benvenuto Questo è un nuovo file di testo. > nuovotestfile.txt

Comprendiamo il concetto con un esempio di script bash. Apri Vim digitando vim nel terminale. Se non hai l'editor Vim sul tuo dispositivo, installalo usando:

$ sudo apt install vim

Digita lo script:

#! /bin/bash
echo Inserisci il tuo nome
leggi il nome
echo $nome > data_dir.txt
echo Inserisci la tua età
leggi l'età
echo $età >> data_dir.txt
cat data_dir.txt

Il gatto comando viene utilizzato per creare e modificare i file. Salva lo script sopra in Vim cambiando modalità dopo aver premuto il tasto Esc chiave e quindi digitare : in myscript.sh . Apri il terminale ed esegui il codice:

Come scrivere un file usando Heredoc

Se vuoi scrivere più righe, il metodo più semplice è usare Heredoc. Here document, noto anche come Heredoc, è un blocco di codice multiuso. La sintassi di Heredoc è:

Comando<<[-] Delimiter
.
testo/comandi
.

delimitatore

È possibile utilizzare qualsiasi stringa al posto di Delimitatore e - può anche essere utilizzato per rimuovere eventuali spazi di tabulazione nel file. Capiamolo usando un semplice esempio:

#! /bin/bash

gatto<< TEXTFILE
Questo è un file di testo.
Questo file viene creato utilizzando heredoc.
FILE DI TESTO

Il comando di script cat precedente crea un file di testo con il nome di TEXTFILE e scrive il testo nel file appena creato. Ora salva il file con il nome di mioscript.sh . Avvia il terminale ed esegui lo script.

Come scrivere un file usando il comando Tee

Un altro metodo per scrivere un file è usare il comando Tee. Come nome che indica questo comando accetta input e scrive su un file e mostra l'output contemporaneamente. Per impostazione predefinita, il comando Tee sovrascriverà i dati esistenti.

$ echo Questo è un testo | tee textfile.txt

Per aggiungere usa –a:

$ echo Questo è un altro testo | tee –a file di testo.txt

Per scrivere più righe, usa:

$ echo Aggiunta di testo a più file | tee textfile1.txt textfile2.txt textfile3.txt

Il comando precedente creerà tre file se non esistono e scriverà del testo su ciascuno di essi.

Conclusione

Questa guida si concentra su più approcci per scrivere su un file in bash con esempi. Nello scripting bash, ci sono diversi modi per scrivere un file, ma il più semplice è usare gli operatori di reindirizzamento >, >>. Per scrivere più righe, è possibile utilizzare heredoc e, se si desidera scrivere gli stessi dati su più righe, il comando tee è abbastanza utile.