Come salvare l'output della riga di comando su file su Windows, Mac e Linux

Come salvare l'output della riga di comando su file su Windows, Mac e Linux / Mac

Quando si esegue un comando in una finestra di Terminale, l'output del comando viene normalmente stampato sul Terminale o sullo schermo, quindi è possibile leggerlo immediatamente. È inoltre possibile stampare l'output di un comando su un file, se si desidera salvarlo.

Salvare l'output di un comando in un file è utile se stai cercando di diagnosticare un problema. Per ottenere aiuto dal supporto tecnico, potrebbe essere necessario eseguire determinati comandi sul computer e inviare i risultati al team di supporto. Questo è facile utilizzando il reindirizzamento dell'output sulla riga di comando.

Oggi parleremo di come inviare l'output di un comando a un file di testo nella shell bash su Windows, Mac e Linux.

Nota: Utilizzeremo il terminale Mac Questi 6 comandi del terminale fantastici amplificheranno il tuo MacBook Questi 6 fantastici comandi del terminale aumenteranno il tuo MacBook Puoi solo stipare così tanto nell'interfaccia grafica prima che diventi ingombrante, quindi non dovrebbe sorprenderci puoi fare cose davvero interessanti usando il terminale Mac. Leggi di più nel nostro esempio, ma funziona allo stesso modo nella shell bash su Linux 40+ Comandi Terminal Linux più utilizzati 40+ Comandi terminali Linux più usati Sia che tu stia appena iniziando o semplicemente curioso sul terminale Linux, ecco i comandi più comuni che ti porteranno per tutto il tempo su Linux. Ulteriori informazioni e nella nuova shell di bash in Windows 10 Una guida rapida per Linux Bash Shell in Windows 10 Una guida rapida per Linux Bash Shell in Windows 10 Ora è possibile eseguire Linux su Windows. Scopri di più su Bash su Windows, da come e perché dovresti installarlo, a funzionalità nascoste che probabilmente non conoscevi. Leggi di più .

Reindirizza l'output su un solo file

Esistono due operatori per reindirizzare l'output di un comando su un file anziché sullo schermo.

Il > il simbolo crea un nuovo file se non presente o sovrascrive il file se già esiste. Il >> crea anche un nuovo file se non presente, ma aggiunge il testo alla fine del file se già esiste, piuttosto che sovrascrivere il file.

Nota per se stessi: quando si reindirizza l'output di uno script di shell in un file, questo non verrà visualizzato sulla console :-) #StupidMe

- Xavier Mertens? (@xme), 5 agosto 2017

Per reindirizzare l'output di un comando in un file, digitare il comando, specificare il > o il >> operatore, quindi fornire il percorso di un file che si desidera reindirizzare all'output. Ad esempio, il comando ls elenca i file e le cartelle nella directory corrente. Quando si esegue il seguente comando, l'elenco di file e cartelle verrà scritto nel ls_output.txt file nel TerminalOutput cartella.

Sostituire / Path / to / file di con il percorso completo del file che si desidera utilizzare.

ls> / percorso / al / file

Questo è il comando per il nostro esempio.

ls> /Users/lorikaufman/TerminalOutput/ls_output.txt

Per visualizzare il contenuto del file nella finestra Terminale, utilizzare il gatto comando come mostrato nel seguente comando. Di nuovo, sostituisci / Path / to / file di con il percorso completo del file che si desidera visualizzare.

gatto / percorso / a / file

Il > l'operatore sostituisce il contenuto di un file esistente ogni volta che lo si usa per reindirizzare l'output. Se si desidera salvare l'output da più comandi in un singolo file, utilizzare >> operatore invece. Questo accoda l'output di un comando alla fine del file specificato, se già esiste. Se il file non esiste, ne crea uno nuovo.

Ad esempio, aggiungeremo le informazioni di sistema alla fine del file che abbiamo creato sopra. Quindi, nella riga seguente, uname -a è il comando, seguito dal >> operatore di reindirizzamento. Quindi, il percorso completo del file a cui vogliamo aggiungere l'output del file il tuo nome comando.

Il -un parametro nel il tuo nome comando stampa tutte le informazioni di sistema disponibili.

uname -a >> /Users/lorikaufman/TerminalOutput/ls_output.txt

Per visualizzare il file con le informazioni aggiunte nella finestra Terminale, immettere il seguente comando, con il percorso completo del file.

cat /Users/lorikaufman/TerminalOutput/ls_output.txt

Ripeti questo processo tutte le volte che è necessario continuare ad aggiungere l'output del comando alla fine del file.

Ecco un altro esempio di invio dell'output di ls comando come albero di directory, con sottodirectory elencate in modo ricorsivo (il R parametro) e un file per riga (il 1 parametro).

ls -1R> /Users/lorikaufman/TerminalOutput/dir_tree.txt 

Quindi, usiamo il gatto comando, come accennato in precedenza per visualizzare il contenuto del file nella finestra del Terminale.

cat /Users/lorikaufman/TerminalOutput/dir_tree.txt

Stampa l'output sullo schermo e reindirizzalo a un file

Il > e >> gli operatori non visualizzano l'output di un comando sullo schermo. L'output viene inviato solo a un file.

Se si desidera inviare l'output a un file e visualizzarlo sullo schermo, utilizzare tee comando al posto di > e >> operatori.

Allarme Nerd! Oggi ho scoperto il comando 'tee', che convoglia sia un file che uno standard. Unix continua a deliziare. pic.twitter.com/aClIT8AdJB

- Zeke Sikelianos (@zeke), 29 agosto 2017

Per usare il tee comando devi pipe l'output dal comando che stai eseguendo, come ls, al tee comando, utilizzando l'operatore pipe, una barra verticale (|). Ad esempio, il seguente comando prende l'output di ls comando e lo canalizza nel tee comando. Il tee il comando quindi invia quell'output allo schermo e al file specificato utilizzando il percorso completo del file.

ls | tee /Users/lorikaufman/TerminalOutput/ls_output.txt

Il comando precedente sostituisce tutto il contenuto nel file o ne crea uno nuovo se non esiste, proprio come il > operatore. Abbiamo usato il seguente gatto comando per visualizzare il contenuto del nostro file nella finestra del Terminale.

cat /Users/lorikaufman/TerminalOutput/ls_output.txt

Per usare il tee comando per stampare l'output sullo schermo e aggiungerlo alla fine di un file, immettere il seguente comando. Qui, stiamo aggiungendo le informazioni complete del sistema alla fine del file usando il uname -a comando, proprio come abbiamo fatto con il >> operatore, ma invia anche l'output allo schermo.

uname -a | tee -a /Users/lorikaufman/TerminalOutput/ls_output.txt

Il seguente comando è il tee versione di stampare un albero di directory in modo ricorsivo su un file e sullo schermo, un file su ogni riga, proprio come abbiamo fatto con > operatore.

ls -1R | tee /Users/lorikaufman/TerminalOutput/dir_tree.txt

Quindi, usiamo il gatto comando di nuovo per visualizzare il contenuto del file.

cat /Users/lorikaufman/TerminalOutput/dir_tree.txt

Ma aspetta, c'è di più

Esistono molti altri modi per reindirizzare l'output, inclusi gli errori, a un file. Puoi leggere i diversi operatori e comandi usati per reindirizzare l'output nel capitolo Redirezione I / O della Guida avanzata di scripting di Bash. Puoi anche imparare di più sull'uso della linea di comando A Guida rapida per iniziare con la linea di comando di Linux Una guida rapida per iniziare con la riga di comando di Linux Puoi fare un sacco di cose incredibili con i comandi in Linux e non è davvero difficile imparare . Leggi di più .

Ho imparato una buona lezione oggi. Non reindirizzare l'output del log di 10 milioni di iterazioni per il loop in un file txt. Risultato: 5 GB di file txt.

- ????????? Lloyd (@ lcarswell1) 21 maggio 2017

Per cosa si usa il reindirizzamento dell'output? Quale metodo usi? Hai imparato altri modi per reindirizzare l'output? Condividi i tuoi pensieri ed esperienze con noi nei commenti qui sotto.

Scopri di più su: Linux Bash Shell, Terminal.