Come reindirizzare stderr a stdout in Bash

How Redirect Stderr Stdout Bash



I comandi in Linux richiedono un input dall'utente, che potrebbe essere un file o qualsiasi attributo, e all'esecuzione forniscono un output chiamato output standard. L'output standard potrebbe essere un output di successo o un output di errore; entrambi verranno visualizzati sullo schermo del terminale. Ma in alcuni casi, si desidera archiviare gli output standard in un file per il test o il debug del codice. In Linux, questi output possono essere reindirizzati a un file e il processo di cattura è chiamato reindirizzamento.







Ogni processo in Linux produce tre flussi di dati, stdin, stdout e stderr:



  • standard : Accetta input dall'utente tramite tastiera
  • stdout : Visualizza l'output sullo schermo
  • stderr : mostra le informazioni sull'errore sullo schermo

Ogni flusso di dati ha un ID numerico:



ID numerico Nome
0 standard
1 stdout
2 stderr

Spieghiamo un po' più in dettaglio il reindirizzamento:





Come reindirizzare l'output standard e l'errore standard in Bash:

Per reindirizzare l'output standard del comando, utilizzeremo 1 con un operatore di reindirizzamento maggiore del segno >:

$ls 1>stdout.txt

Il comando precedente creerà un file e posizionerà l'output standard del comando ls nel file stdout.txt.



Per leggere il file stdout.txt, usa:

$gattostdout.txt

Possiamo reindirizzare anche l'errore standard su un file utilizzando il comando:

$gattomiofile.txt2>stderr.txt

Per visualizzare il file stderr.txt, utilizzare:

$gattostderr.txt

Assicurati che l'uso 2 sia maggiore del segno >. Poiché nella directory non è presente alcun file myfile.txt, il comando cat restituirà un errore che verrà aggiunto al file stderr.txt.

Questi output standard possono essere reindirizzati anche con un singolo comando, utilizzare:

$ls 1>stdout.txt2>stderr.txt

L'output del comando ls sarà scritto nel stdout.txt file, ma il stderr.txt rimarrà vuoto perché non ci sarebbero errori.

Ora facciamo per stderr.txt:

$gattomiofile.txt1>stdout.txt2>stderr.txt

Utilizzare il comando indicato di seguito per leggere stderr.txt.

$gattostderr.txt

E, naturalmente, stdout.txt sarà vuoto.

Conclusione :

Il comando Linux all'esecuzione fornisce un output standard che potrebbe essere un output di successo o un output di errore. In genere, questi output non possono essere reindirizzati utilizzando operatori di reindirizzamento; dobbiamo usare ID numerici specifici con il segno >. In questa guida abbiamo appreso come utilizzare questi tasti numerici per reindirizzare l'output standard a un file con esempi.