Sappiamo tutti come l'esecuzione di un comando nella riga di comando di Debian, il Terminale, porti all'esecuzione del comando e alla stampa dei risultati, se presenti, nel Terminale stesso. A volte, questa visualizzazione immediata dell'output non è sufficiente, soprattutto se si desidera salvare l'output per un uso successivo. Fortunatamente, bash Linux e tutto il bash del sistema operativo, del resto, è dotato della capacità di stampare l'output di un comando su un file specifico. In questo articolo, lavoreremo sui seguenti due scenari:
- Salvataggio dell'output del comando su un file
- Stampa l'output nel terminale e poi lo salva in un file
Abbiamo eseguito i comandi e le procedure menzionati in questo articolo su un sistema Debian 11 Bullseye.
Salvataggio dell'output del comando su un file
Eseguiremo alcuni esempi in cui l'output dei comandi verrà salvato nel nome file che specifichiamo.
Per aprire il Terminale, accedi alla ricerca di Avvio applicazioni tramite il tasto Super/Windows e quindi cerca Terminale come segue:
Crea nuovo file/Sostituisci un file esistente
Se desideri salvare l'output di un comando in un nuovo file o sostituire il contenuto di un file già esistente con l'output del comando, utilizza la seguente sintassi:
$ [comando]> [/posizionefile/nomefile]
Ad esempio, utilizzerò il comando lscpu (che visualizza le informazioni di sistema) e quindi ne stamperò il contenuto nel file denominato systeminformation.txt. Questo file non esiste già sul mio sistema.
$ lscpu > /home/sana/systeminformation.txt
Quando accedo a questo file tramite il file manager, appare così:
Aggiungi l'output a un file già esistente
Se vuoi salvare l'output di un comando Linux in un file senza alterarne il contenuto già esistente, puoi usare la seguente sintassi:
$ [comando]>> [/posizionefile/nomefile]
Ad esempio, il comando seguente aggiungerà il risultato del comando ls alla fine del mio file systeminformation.txt già esistente.
$ ls >> /home/sana/systeminformation.txt
Il seguente file che una volta conteneva solo le mie informazioni di sistema ora contiene anche l'output del mio comando ls:
Stampare l'output sul terminale e salvarlo in un file
Potresti aver notato che i comandi che abbiamo menzionato sopra salvano solo l'output nel file senza stamparli sul Terminale stesso. Utilizzare la seguente sintassi se si desidera visualizzare l'output del comando anche sul Terminale:
$ [comando] | tee [/posizionefile/nomefile]
Ad esempio, il testo che vogliamo riprodurre nell'immagine seguente verrà ora ripreso sul Terminale e stampato anche nel file miofile.txt.
$ echo "print this text to my file" | tee /home/sana/myfile.txt
Questi sono i contenuti del file generato tramite il comando:
Se si desidera aggiungere l'output di un comando a un file già esistente. Si prega di seguire questa sintassi:
$ [comando] | tee -a [/posizionefile/nomefile]
Ad esempio, l'immagine seguente mostra come altro testo verrà ripreso e quindi aggiunto al mio file già esistente:
$ echo "here is some more text for printing" | tee -a /home/sana/myfile.txt
Ecco come appare ora il file:
Questi file di testo orientati all'output che abbiamo generato in questo articolo possono essere molto più utili in alcuni casi rispetto alla normale stampa dell'output sul terminale. Ecco quanto è potente Debian bash!