Spesso, mentre si lavora sul terminale Linux, si potrebbe voler salvare l’output del terminale di un comando in un file. Questo file può essere utilizzato come informazioni per un’altra operazione o semplicemente per registrare l’attività del terminale. Qui ci sono quattro diversi modi in cui il contenuto del terminale può essere salvato in un file.
I seguenti metodi sono applicabili a tutte le distribuzioni Linux e possono essere utilizzati anche su Mac e BSD. L’unica cosa a cui devi pensare è qual è il metodo migliore per portare a termine il lavoro.
1. Utilizzo degli operatori di reindirizzamento
Il modo più comune e semplice per reindirizzare l’output dal terminale in un file è utilizzare l’estensione >
e >>
operatori. Indirizzano solo l’output a un file di testo specificato. Non reindirizzano gli errori. Quelli appariranno ancora nel terminale.
Il >
l’operatore reindirizza l’output a un file e sovrascrive il contenuto di quel file mentre il >>
L’operatore aggiunge l’output alla fine del file. Ecco un’illustrazione:
Per prima cosa crea un file usando il touch
comando.
Viene ora ripetuta una riga in “file1.txt” utilizzando il >
operatore. Si può pensare che sia il dumping dell’output di echo
comando a “file1.txt”.
echo "first statement" > file1.txt

Un’altra riga viene ripetuta in “file1.txt”.
echo "second statement" > file1.txt

Visualizzando il contenuto di “file1.txt”, vediamo che nel file è memorizzata solo la seconda riga. Questo perché il >
l’operatore sovrascrive il contenuto del file esistente.

Se desideriamo “aggiungere” del contenuto al file, allora il >>
l’operatore deve essere specificato.

È possibile visualizzare il risultato dell’operazione di aggiunta riuscita.

Se vuoi solo salvare gli errori, usa il file 2>
e 2>>
operatori invece.
Se sei interessato a registrare tutto, usa &>
e &>>
per reindirizzare tutto l’output (inclusi gli errori) a un file senza mostrare nulla nel terminale.
2. Utilizzo del comando tee
Con gli operatori di reindirizzamento mostrati sopra, l’output del comando non viene visualizzato sullo schermo. Se desideri che visualizzi l’output sul terminale e scriva su un file, puoi usare il tee
comando.
<command> | tee -a <file_name>
Il simbolo pipe (|) passa l’output di <command>
come input per tee
, che a sua volta visualizza l’output sullo schermo. Se la -a
switch è specificato, quindi tee
aggiunge quell’output al file specificato, altrimenti sovrascriverà il contenuto di quel file.

Secondo il comando mostrato sopra, il testo “quarta istruzione” avrebbe dovuto essere aggiunto a “file1.txt”. Verifica utilizzando il cat
Il comando corrobora la nostra ipotesi.

Puoi anche utilizzare il file |&
operatore e il tee
comando per visualizzare tutto e anche registrarlo.
<command> |& tee -a <file_name>
3. Utilizzo del comando script
Con il script
comando, l’output dei comandi digitati in seguito verrebbe automaticamente scritto in un file fino a quando non viene richiesto di cessare. Questo può essere paragonato a una sessione che registra l’attività del terminale.
Prima il script
comando viene richiamato con il nome del file per memorizzare l’attività del terminale.
script <file_name>

Un messaggio richiede l’avvio dello script, quindi i comandi vengono digitati uno dopo l’altro – qui date
, pwd
, ls
e cal
.

Per terminare lo scripting, il exit
viene richiamato il comando. C’è un messaggio che indica che l’operazione “script” è terminata. Visualizzazione del contenuto di “script_log.txt” utilizzando cat
, vediamo che il contenuto del file sembra una replica esatta del terminale.

Verso la fine possiamo vedere il timestamp quando lo script è stato completato. Quando questo file viene visualizzato in un editor di testo, possiamo vedere alcuni contenuti di testo e spazzatura, che in realtà è il prompt di bash in un formato comprensibile da shell bash.

Solo quando questo file viene visualizzato nella shell utilizzando l’estensione cat
comando, otteniamo informazioni completamente intelligibili.
Proviamone un altro, salvando l’output del terminale in “2-script_log.txt”.

Comandipwd
e ls
sono digitati.

Senza digitare exit
, la finestra del terminale viene chiusa. Quando proviamo a visualizzare il contenuto di “2-script_log.txt”, possiamo vedere che è vuoto.

Quando una sessione di script è stata avviata, il contenuto di quella sessione viene conservato in memoria e scritto nel file solo quando il file exit
viene richiamato il comando. Qui, da allora exit
non è stato richiamato, i contenuti di quella sessione non sono stati salvati in “2-script_log.txt”.
Il comportamento di sovrascrittura e aggiunta dello script è simile a tee
e gli operatori di reindirizzamento. Il -a
switch aggiunge il contenuto di una sessione a un file esistente in precedenza. Qui, l’output di echo
il comando viene aggiunto a “script_log.txt”.

Vediamo l’output di “script_log.txt”. Possiamo vedere l’output salvato in precedenza di date
, pwd
, ls
, cal
comandi seguiti dal timestamp; dopodiché, troviamo le informazioni della sessione successiva che terminano con il timestamp.

4. Utilizzo del comando logsave
logsave
si comporta in modo simile a tee
– visualizza l’output sullo schermo e lo salva anche in un file. Viene utilizzato come mostrato di seguito:
logsave <file_name> <command>

logsave
scrive l’output di <command>
al file specificato da <file_name>
. Vediamo l’output di “mylog_file.txt”.

C’è una buona quantità di informazioni memorizzate insieme al risultato di un comando. Qui vengono memorizzati due timestamp: il primo è l’ora in cui il comando è stato avviato e il secondo è l’ora in cui il comando ha completato la sua esecuzione. Qui, i timestamp sono gli stessi. Sebbene, quando un elenco di directory ricorsivo viene avviato nella directory “/ home” su un sistema multiutente, il comando richiederebbe un po ‘di tempo per essere eseguito completamente. In tal caso, i timestamp di inizio e di fine sarebbero diversi.
L’output di più comandi può essere aggiunto allo stesso file quando il file -a
viene utilizzato con logsave
.
logsave -a <file_name> <command>

Quando proviamo a visualizzare il contenuto di “mylog_file.txt”, vediamo che l’output dei due comandi immessi in precedenza è delimitato da una riga.

Quanto sopra sono alcuni dei modi più utili per salvare l’output di un terminale in un file in Linux. Quale preferisci?
Relazionato:
- Come multitasking nel terminale Linux con schermo
- Come installare un dizionario da utilizzare nel terminale Linux
- Come utilizzare il terminale Linux come calcolatrice