Reindirizzare STDOUT e STDERR per file

Reindirizzare STDOUT e STDERR per file

Quando si reindirizza qualsiasi output di comandi in un file, noterai che i messaggi di errore vengono stampati sulla finestra terminale. Qualsiasi comando eseguito in qualsiasi shell Linux, come Bash, utilizza tre flussi I/O regolari. Un descrittore di file numerici viene utilizzato per rappresentare ogni flusso.

  • Il flusso di input standard (stdin): 0
  • Il flusso di output standard (stdout): 1
  • Il flusso di errore standard (Stderr): 2

In questo post, afferreremo le informazioni che vengono nel reindirizzamento di STDOUT e STDERR per file.

Output standard (stdout):

Ogni sistema operativo basato su Linux ha una condanna di un luogo predefinito per il comando eseguito. Tutti si riferiscono a questa nozione come "stdout" o "output standard" per renderlo più semplice. La tua shell Bash o ZSH è costantemente alla ricerca della posizione di uscita predefinita. Quando la shell rileva la nuova uscita, la visualizza sullo schermo del terminale per vederlo. Altrimenti, invierà l'output alla sua posizione predefinita.

Errore standard (Stderr):

Errore standard o STDERR è simile all'input e all'output standard, ma viene utilizzato per la memorizzazione di messaggi di errore. L'errore standard può essere reindirizzato alla riga di comando o a un file utilizzando un terminale. Se si desidera registrare o archiviare i messaggi in un file di registro separato o nascondere i messaggi di errore, il reindirizzamento di Stderr ti aiuterà. Ora andiamo verso il lato pratico di StDout e Reindirizzamento di Stderr.

Reindirizzare STDOUT e STDERR a un file:

Poiché il reindirizzamento è un metodo per catturare un output del programma e inviarlo come input a un altro comando o file. I flussi I/O possono essere reindirizzati mettendo in uso l'operatore N>, dove n è il numero del descrittore dei file. Per il reindirizzamento di StDout, usiamo "1>" e per Stderr, "2>" viene aggiunto come operatore.

Abbiamo creato un file chiamato "Esempio.txt "per archiviare l'output reindirizzato nella nostra directory corrente.

Il (comando> file) è considerato il classico operatore di reindirizzamento che reindirizza solo l'output standard con l'errore standard mostrato nel terminale. Dimostreremo anche diverse opzioni per reindirizzare Stderr.

Reindirizzamento di Stderr e stdout per separare i file:

Di seguito è riportata la sintassi del comando per il reindirizzamento di STDOUT e STDERR per separare i file.

comando> out 2> errore

Il comando seguente reindirizzerà l'output al file "out" e messaggi di errore al file "errore".

$ cat campione.txt> out 2> Errore

Reindirizzamento di Stderr a StDout:

È una pratica comune reindirizzare lo stderr con l'output standard di un programma per archiviare tutto in un singolo file. Ecco la sintassi del comando per il reindirizzamento di Stderr a StDout:

comando> out 2> & 1
$ ls> campione.txt 2> & 1
$ cat campione.TXT

> out reindirizzati reindirizza lo stdout su campione file.txt, e 2> & 1 reindirizzerà lo stderr alla posizione corrente di stdout.

Se STderr viene reindirizzato prima a STDOut, utilizzare il comando di seguito per reindirizzare lo stdout in un file.

Comando 2> & 1> File
$ ls -al 2> & 1> campione.TXT
$ cat campione.TXT

"&>" È anche usato per la stessa funzionalità che "2> & 1" esegue.

comando e> file
$ ls e> campione.TXT
$ cat campione.TXT

Reindirizzare STDOUT e STDERR a un singolo file:

Tutte le conchiglie non supportano questo reindirizzamento di questo modulo, ma Bash e ZSH lo supportano. StDout e Stderr possono essere reindirizzati utilizzando la seguente sintassi.

comando e> out
$ cat campione.txt &> out

Nella prossima sezione dell'articolo, controlleremo l'esempio separato per il reindirizzamento di StDout e Stderr.

Reindirizzamento di StDout a un file:

L'output standard è rappresentato da "1" nell'elenco dei numeri del descrittore dei file. Per il comando di reindirizzamento senza alcun numero di descrittore di file, il terminale impostato il suo valore su "1". La sintassi per il reindirizzamento dello stdout in un file è data come segue:

comando> file

Stiamo usando il "campione.File "per la memorizzazione dell'output standard del comando" ls -al "

$ ls -al> campione.TXT
$ cat campione.TXT
Comando 1> File
$ ls 1> campione.TXT
$ cat campione.TXT

Reindirizzamento di Stderr a un file:

Utilizzare l'operatore "2>" per il reindirizzamento di Stderr in un file.

Comando 2> File
$ ls -al 2> campione.TXT

Possiamo combinare l'esecuzione per Stderr e StDout in un singolo comando di reindirizzamento.

comando 2> errore.txt 1> output.TXT

Nell'esempio seguente, i messaggi di errore verranno archiviati in "Errore.txt ", dove" output.txt "avrà il suo output standard di" Comando LS."

$ ls 2> Errore.txt 1> output.TXT
Output di $ Cat.TXT

Conclusione:

Avere il concetto di reindirizzamento e descrittori di file per flussi I/O è molto prezioso mentre si lavora in un terminale Linux. In questo post, abbiamo parlato dei normali flussi I/O, tra cui StDout e Stderr. La prima sezione di questo post ti porta informazioni dettagliate sul reindirizzamento, sui flussi I/O e sul descrittore di file numerici. Successivamente, hai visto l'esempio pratico per varie forme di reindirizzamento StDout e Stderr.