Inserire del testo in un file usando la shell
Durante la scrittura script bash, leggere e scrivere file è uno dei compiti più comuni. Ad esempio per salvare l’output di un comando su un file o semplicemente per manipolarlo in bash si utilizzano diversi comandi, di seguito ne sono riportati alcuni:
- Utilizzando gli operatori direzionali
- Usando il comando tee
- Utilizzo di heredoc
- Uso del comando printf
Uso degli operatori direzionali
In generale possiamo usare due operatori direzionali che si possono usare per scrivere un file durante lo scripting di bash
parentesi angolare singola “>”
- sovrascrive i dati precedentemente presenti nel file con i nuovi
parentesi angolare doppia “>>”
- aggiunge nuovi dati nel file
Per utilizzare uno degli operatori direzionali, usate:
echo <“data”> <directional-operator> <filename>
Per esempio, per aggiungere dati a un file che attualmente è vuoto o per sovrascrivere i dati in un file, usate la sintassi sopra descritta in questo modo:
echo “Hello Linuxiano 1” > miofile.txt
La sintassi sopra scrive e crea il file.
Inserire testo nel file usando la shell con il comando tee
Uso Base
tee [ -a ] [ -i ] [ File … ]
Il comando tee prende il nome dai raccordi a T utilizzati solitamente in idraulica per “sdoppiare” un flusso in due. Capiamo quindi subito dal nome che questo comando potrebbe servire per sdoppiare qualcosa.
Tee su Linux fa proprio questo: prende il contenuto dello standard input, lo mostra sullo schermo e contemporaneamente lo scrive su uno o più file.
Di seguito un esempio:
echo “data” | tee
Per aggiungere dei dati a un file:
echo “Benvenuti su Linuxiano” | tee miofile.txt
Ricordate che la sintassi sopra descritta non è solo utile per scrivere i dati, ma può essere utilizzata anche nel caso in cui si voglia sovrascrivere i dati attualmente presenti nel file con i nuovi dati.
Quindi, se si vogliamo mantenere i dati attuali e scrivere il file con un nuovo insieme di dati, usiamo il flag -a:
echo “saluti” | tee -a miofile.txt
Per aggiungere gli stessi dati a più file:
echo “saluti” | tee -a miofile.txt miofile2.txt miofile3.txt
Per modificare un file di proprietà di altri utenti con l’aiuto di privilegi di amministratore come questo:
echo “Questo è un file di prova” | sudo tee -a miofile1.txt
Inserire testo nel file usando la shell con il comando printf
Poiché i modi sopra descritti non consentono all’utente di aggiungere una formattazione ai dati, se volete aggiungere una formattazione specifica ai dati usate printf:
printf “Saluti da linuxiano nQuesto è un file di prova.n” >> miofile1.txt
Usare Heredoc
Un altro modo per scrivere un file in bash è usare il formato here document, che non è una sorta di comando ma è più un formato da seguire per scrivere più righe di dati:
cat << [delimitatore]
dati…………
[delimitatore]
Nella sintassi cat viene usato per leggere i dati e delimitatore è una sorta di confine per i dati; potrebbe essere una stringa o un nome di file. Nella pratica normale si usa di solito END o EOF come delimitatore, ma tutto dipende dalle preferenze dell’utente.
Per esempio, ho creato un file .sh e ho usato il formato di heredoc in questo modo:
#! /bin/bash
cat << MYFILE
Saluti da linuxiano
Questo è un file di testo creato con Heredoc
MYFILE
Salvate il file sopra con mioscript.sh e da te terminale scrivete:
bash mioscript.sh
Fonte: https://linuxiano.altervista.org/2023/01/inserire-testo-nel-file-usando-la-shell/
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.