4Sep
Quando si esegue un comando al prompt di bash, normalmente stampa l'output di quel comando direttamente sul terminale in modo da poterlo leggere immediatamente. Ma bash consente anche di "reindirizzare" l'output di qualsiasi comando, salvandolo in un file di testo in modo da poter rivedere l'output in un secondo momento.
Funziona in modo basico su qualsiasi sistema operativo, da Linux e macOS all'ambiente bash basato su Ubuntu di Windows 10.
Opzione 1: reindirizzare l'output su un file solo
Per utilizzare il reindirizzamento bash, si esegue un comando, si specifica & gt;o & gt; & gt;operatore, quindi fornire il percorso di un file a cui si desidera reindirizzare l'output.
- & gt;reindirizza l'output di un comando in un file, sostituendo il contenuto esistente del file.
- & gt; & gt;reindirizza l'output di un comando in un file, aggiungendo l'output ai contenuti esistenti del file.
Tecnicamente, questo reindirizza "stdout": l'output standard, che è lo schermo, in un file.
Ecco un semplice esempio. Il comando ls elenca i file e le cartelle nella directory corrente. Così.quando si esegue il seguente comando, ls elencherà i file e le cartelle nella directory corrente. Ma non li stamperà sullo schermo: li salverà nel file specificato.
ls & gt;/path/to/ fileNon è necessario specificare il percorso di un file esistente. Specificare un percorso valido e bash creerà un file in quella posizione.
Se si visualizzano i contenuti del file, verrà visualizzato l'output del comando ls. Ad esempio, il comando cat stampa il contenuto di un file sul terminale:
cat /path/to/ fileRicorda, & gt;l'operatore sostituisce il contenuto esistente del file con l'output del comando. Se vuoi salvare l'output di più comandi in un singolo file, devi utilizzare & gt; & gt;operatore invece. Ad esempio, il seguente comando aggiungerà le informazioni di sistema al file specificato:
uname -a & gt; & gt;/path/to/ fileSe il file non esiste già, bash creerà il file. In caso contrario, bash lascerà da solo il contenuto esistente del file e aggiungerà l'output alla fine del file.
Quando visualizzi il contenuto del file, vedrai i risultati del tuo secondo comando aggiunti alla fine del file:
Puoi ripetere questo processo tutte le volte che vuoi per continuare ad aggiungere l'output alla fine del filefile.
Opzione due: stampa normalmente l'output e reindirizza a un file
Potresti non voler reindirizzare l'output con & gt;o & gt; & gt;operatori, poiché non vedrete l'output del comando nel terminale. Ecco a cosa serve il comando tee. Il comando tee stampa l'input che riceve sullo schermo e lo salva su un file allo stesso tempo.
Per reindirizzare l'output di un comando a tee, stamparlo sullo schermo e salvarlo in un file, utilizzare la seguente sintassi: comando
|tee /path/to/ fileQuesto sostituirà qualsiasi cosa nel file con l'output del comando, proprio come & gt;operatore.
Per reindirizzare l'output di un comando a tee, stampare sullo schermo e salvarlo in un file, ma aggiungerlo alla fine del file: comando
|tee -a /path/to/ fileQuesto aggiungerà l'output alla fine del file, proprio come & gt; & gt;operatore.
La shell bash include alcuni operatori avanzati aggiuntivi che eseguono funzioni simili. Saranno particolarmente utili se stai scrivendo script di bash. Consulta il capitolo Redirezione I / O nella Guida avanzata di scripting di Bash per informazioni più dettagliate.