Com redirigir stderr a stdout a Bash

How Redirect Stderr Stdout Bash



Els comandaments a Linux prenen algunes dades de l'usuari, que poden ser un fitxer o qualsevol atribut, i en executar-les, donen una sortida anomenada sortida estàndard. La sortida estàndard podria ser una sortida d’èxit o una sortida d’error; tots dos es mostraran a la pantalla del terminal. Però, en alguns casos, voleu emmagatzemar les sortides estàndard en un fitxer per provar-les o depurar-les. A Linux, aquestes sortides es poden redirigir a un fitxer i el procés de captura es denomina redirecció.







Tots els processos de Linux produeixen tres fluxos de dades, stdin, stdout i stderr:



  • stdin : Pren l'entrada de l'usuari mitjançant el teclat
  • stdout : Mostra la sortida a la pantalla
  • stderr : Mostra informació d'error a la pantalla

Cada flux de dades té un identificador numèric:



Identificador numèric Nom
0 stdin
1 stdout
2 stderr

Explicem la redirecció una mica més amb detalls:





Com redirigir la sortida estàndard i l'error estàndard a Bash:

Per redirigir la sortida estàndard de l'ordre, utilitzarem 1 amb un operador de redirecció superior al signe>:

$ls 1>stdout.txt

L'ordre anterior crearà un fitxer i col·locarà la sortida estàndard de l'ordre ls al fitxer stdout.txt.



Per llegir el fitxer stdout.txt, utilitzeu:

$gatstdout.txt

També podem redirigir l’error estàndard a un fitxer mitjançant l’ordre:

$gatmyfile.txt2>stderr.txt

Per veure el fitxer stderr.txt, utilitzeu:

$gatstderr.txt

Assegureu-vos que l’ús 2 sigui superior al signe>. Com que no hi ha cap fitxer myfile.txt al directori, l'ordre cat donarà un error que s'afegirà al fitxer stderr.txt.

Aquestes sortides estàndard es poden redirigir amb una sola ordre també, utilitzeu:

$ls 1>stdout.txt2>stderr.txt

La sortida de l'ordre ls s'escriurà al fitxer stdout.txt , però el fitxer stderr.txt romandrà buit perquè no hi hauria cap error.

Ara anem a fer per stderr.txt:

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

Utilitzeu l'ordre esmentada a continuació per llegir stderr.txt.

$gatstderr.txt

I, per descomptat, stdout.txt estarà buit.

Conclusió :

L'ordre Linux en executar proporciona una sortida estàndard que pot ser una sortida d'èxit o una sortida d'error. Generalment, aquestes sortides no es poden redirigir mitjançant operadors de redirecció; hem d’utilitzar identificadors numèrics específics amb el signe>. En aquesta guia, hem après a utilitzar aquestes tecles numèriques per redirigir la sortida estàndard a un fitxer amb exemples.