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 vedremo come inviare l'output di un comando a un file di testo nella shell bash su Windows, Mac e Linux.
Nota: Useremo 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 essere così grande Sorprendi che tu possa fare cose davvero interessanti usando il Mac Terminal. 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 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 su 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 l'operatore > o >> e quindi fornire il percorso a 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 file ls_output.txt nella cartella TerminalOutput .
Sostituisci / percorso / su / file con il percorso completo del file che si desidera utilizzare.
ls>/path/to/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 comando cat come mostrato nel seguente comando. Di nuovo, sostituire / percorso / su / file con il percorso completo del file che si desidera visualizzare.
cat /path/to/file
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 invece l'operatore >> . 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 dall'operatore >> di reindirizzamento. Quindi, il percorso completo del file a cui vogliamo aggiungere l'output del comando uname .
Il parametro -a nel comando uname 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 del comando ls come albero delle directory, con le sottodirectory elencate in modo ricorsivo (il parametro R ) e un file per riga (il parametro 1 ).
ls -1R>/Users/lorikaufman/TerminalOutput/dir_tree.txt
Quindi, usiamo il comando cat, 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
Gli operatori > e >> 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 il comando tee anziché gli operatori > e >> .
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 utilizzare il comando tee è necessario reindirizzare l'output dal comando in esecuzione, come ls, al comando tee, utilizzando l'operatore pipe, una barra verticale ( | ). Ad esempio, il seguente comando prende l'output del comando ls e lo inserisce nel comando tee . Il comando tee invia quindi quell'output allo schermo e a un 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 l'operatore > . Abbiamo usato il seguente comando cat per visualizzare il contenuto del nostro file nella finestra del terminale.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Per utilizzare il comando tee 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 comando uname -a, proprio come abbiamo fatto con l'operatore >>, ma inviando l'output anche sullo schermo.
uname -a | tee -a /Users/lorikaufman/TerminalOutput/ls_output.txt
Il seguente comando è la versione tee 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 l'operatore > .
ls -1R | tee /Users/lorikaufman/TerminalOutput/dir_tree.txt
Quindi, usiamo di nuovo il comando cat 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.