GNU/Linux >> Linux Esercitazione >  >> Linux

Come stampare l'output del comando Linux su un file?

Usa il > operatore:

rsync -v > log.txt

scriverà l'output del comando rsync in un file chiamato log.txt .


Puoi chiamare il tuo script e reindirizzare "output standard" (AKA STDOUT) a un file di registro. Utilizzare '>>' per aggiungere al file di registro o '>' per sovrascrivere il file di registro. Il file verrà creato (se le autorizzazioni sulla sua directory lo consentono) se non esiste già. Se il file esiste già, assicurati che sia scrivibile da te (o da chiunque esegua il tuo script).

Se aggiungi sempre al file di registro invece di sovrascriverlo, è buona norma assicurarsi fin dall'inizio che qualcosa "ruoti" il tuo file di registro, ovvero lo sposti con un altro nome e rimuova i file di registro più vecchi. Se il file di registro è univoco per il tuo script, potresti fare in modo che il tuo script si occupi della rotazione del file di registro.

Di solito, il modo preferito è chiamare lo script con STDOUT reindirizzato, ma ci possono essere momenti in cui si desidera eseguire il reindirizzamento all'interno dello script stesso per uno o più comandi. Puoi aggiungere ">> logfile" dopo qualsiasi istruzione in uno script di shell per aggiungere STDOUT di quel comando a logfile. Puoi cambiarlo in "2>&1>> logfile" per aggiungere sia "errore standard" (AKA STDERR) e STDOUT nel file di registro. Di solito non si desidera che STDERR acceda anche al file di registro poiché STDERR viene solitamente utilizzato per notificare qualunque/chiunque stia eseguendo lo script di un problema. Ma ci sono momenti e situazioni in cui lo vuoi. Se lo desideri, puoi raggruppare i comandi nel tuo script all'interno di { e } e reindirizzare STDOUT dell'intero gruppo in una volta inserendo il reindirizzamento dopo la parentesi graffa di chiusura.


Oltre a quanto sopra, se sei curioso di vedere l'output stampato sullo schermo E in un file per l'archiviazione/grepping/ecc, potresti voler "tee " l'output. È un ottimo comando e prende il nome dal tubo a T che si trova negli impianti idraulici del mondo reale e funziona bene per "console secondarie" come mysql, ecc.

Il comando è tee ... ecco un esempio copiato da un utente chiamato "toydi":

Per visualizzare e registrare contemporaneamente l'output di un comando:ls -l | tee -a file.log In questo esempio, visualizzerà l'output dell'elenco delle directory e, inoltre, salverà l'output in file.log. L'opzione -assegna il comando per aggiungere anziché sovrascrivere il file.

Inoltre, controlla l'immagine su wikipedia per una bella visualizzazione su come funziona il tee. Mi collegherei ad esso, ma non ho abbastanza "punti di reputazione" per pubblicare più di 1 link, e ho sentito che "toydi" meritava il credito del link :)


Linux
  1. Come assegnare l'output di un comando Linux a una variabile

  2. Come salvare l'output dei comandi in un file in Linux

  3. Come svuotare un file di registro in Linux

  4. Come aggiungere l'output a un file?

  5. Come reindirizzare l'output del comando time su un file in Linux?

Come utilizzare un comando file in Linux

Come aprire un file in Linux

Come stampare righe duplicate in un file di testo in Linux

Come mescolare le linee in un file in Linux

Come usare il comando lsof in Linux

Come utilizzare il comando shred Linux