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 fileDati >> Nome file
Comprendiamo la procedura di scrittura su un file con un esempio:
Come scrivere un file usando gli operatori di reindirizzamento
Come discusso sopra, l'approccio semplice e diretto della scrittura su un file utilizza gli operatori di reindirizzamento. Ad esempio, se desideri modificare il testo di un file già esistente, crea prima un file di testo con il nome di "file di prova.TXT” e scrivici dentro qualsiasi cosa:
Salva il file di testo.
Digita il comando indicato di seguito nel terminale:
$ echo “Sovrascrivi il testo esistente nel file” > testfile.TXT
L'eccessiva strizzatura può essere rischiosa; è quindi buona norma abilitare “noclobber”. L'impostazione di "noclobber" bloccherebbe qualsiasi sovrascrittura su qualsiasi file in uscita.
$ set -o noclobber$ echo “Sovrascrivi il testo esistente nel file” > testfile.TXT
Ma se vuoi bypassare "noclobber", usa il ">|” operatore invece di “>”:
$ echo “Sovrascrivi il testo esistente nel file” >| file di prova.TXTOppure 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 “Aggiungere testo al file di testo esistente” >> testfile.TXT
“eco" 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 \n Questo è un nuovo file di testo.” > newtestfile.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 vimDigita lo script:
#! /bin/bashecho “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 "gattoIl comando "viene utilizzato per creare e modificare i file. Salva lo script sopra in Vim cambiando modalità dopo aver premuto il tasto "Esctasto " e quindi digitare ":w mioscript.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". Il documento Here, 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ò essere utilizzato anche per rimuovere eventuali spazi di tabulazione nel file. Capiamolo usando un semplice esempio:
#! /bin/bashgatto << TEXTFILE
Questo è un file di testo.
Questo file è stato creato usando heredoc.
FILE DI TESTO
Il comando "cat" dello script sopra 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 "mio script.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 prende l'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” | file di testo tee.TXT
Per aggiungere usa -a:
$ echo “Questo è un altro testo” | tee -a file di testo.TXT
Per scrivere più righe, usa:
$ echo “Aggiungere testo a più file” | tee textfile1.txt file di testo2.txt file di testo3.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.