Redirigiu stdout i stderr a File

Redirect Stdout Stderr File



Quan redirigiu qualsevol sortida de l'ordre a un fitxer, notareu que els missatges d'error s'imprimeixen a la finestra del terminal. Qualsevol ordre executada en qualsevol intèrpret d'ordres de Linux, com ara bash, utilitza tres fluxos d'E / S regulars. S’utilitza un descriptor numèric de fitxers per representar cada flux.

  • El flux d’entrada estàndard (stdin): 0
  • El flux de sortida estàndard (stdout): 1
  • El flux d’error estàndard (stderr): 2

En aquest post, copsarem la informació que es troba a la redirecció de stdout i stderr al fitxer.







Sortida estàndard (stdout):

Cada sistema operatiu basat en Linux té la convicció d'un lloc predeterminat per a l'ordre executada. Tothom fa referència a aquesta noció com a sortida estàndard o estàndard per fer-la sonar més fàcil. El vostre intèrpret d’ordres Bash o Zsh busca constantment la ubicació de sortida per defecte. Quan l'intèrpret d'ordres detecta una nova sortida, la mostra a la pantalla del terminal perquè la vegeu. En cas contrari, enviarà la sortida a la seva ubicació predeterminada.



Error estàndard (stderr):

L'error estàndard o stderr és similar a l'entrada i sortida estàndard, però s'utilitza per emmagatzemar missatges d'error. L'error estàndard es pot redirigir a la línia d'ordres o a un fitxer mitjançant un terminal. Si voleu enregistrar o emmagatzemar missatges en un fitxer de registre separat o amagar els missatges d’error, la redirecció de stderr us ajudarà. Ara anem cap al costat pràctic de la redirecció stdout i stderr.



Redirecció de stdout i stderr a un fitxer:

Com que la redirecció és un mètode per capturar una sortida del programa i enviar-lo com a entrada a una altra ordre o fitxer. Es poden redirigir els fluxos d'E / S posant en ús l'operador n>, on n és el número del descriptor del fitxer. Per redirigir stdout, fem servir 1> i per a stderr, s’afegeix 2> com a operador.





Hem creat un fitxer anomenat sample.txt per emmagatzemar la sortida redirigida al nostre directori actual.



El fitxer (ordre>) es considera l’operador de redirecció clàssic que només redirigeix ​​la sortida estàndard amb l’error estàndard que es mostra al terminal. També demostrarem diferents opcions per redirigir stderr.

Redirecció de stderr i stdout a fitxers separats:

A continuació es mostra la sintaxi d’ordres per redirigir stdout i stderr a fitxers separats.

comandament >fora2>error

L'ordre que es mostra a continuació redirigirà la sortida al fitxer de sortida i els missatges d'error al fitxer d'error.

$gatsample.txt>fora2>error

Redirecció de stderr a stdout:

És una pràctica habitual redirigir el stderr amb la sortida estàndard d’un programa per emmagatzemar-ho tot en un sol fitxer. Aquí teniu la sintaxi d’ordres per redirigir stderr a stdout:

comandament >fora2> &1$ls >samplefile.txt2> &1

$gatsamplefile.txt

> les redireccions fora redirigeixen el stdout a samplefile.txt, i 2> & 1 redirigirà el stderr a la ubicació actual de stdout.

Si stderr es redirigeix ​​a stdout primer, utilitzeu l'ordre que es mostra a continuació per redirigir l'estandout a un fitxer.

comandament 2> &1 > dossier$ls -al 2> &1 >samplefile.txt

$gatsamplefile.txt

&> també s'utilitza per a la mateixa funcionalitat que realitza 2> & 1.

comandament &> dossier$ls &>samplefile.txt

$gatsamplefile.txt

Redirecció de stdout i stderr a un sol fitxer:

Tots els intèrprets no admeten aquesta redirecció de formulari, però bash i Zsh ho admeten. Stdout i stderr es poden redirigir mitjançant la sintaxi següent.

comandament &>fora$gatsample.txt&>fora

A la propera secció de l'article, comprovarem l'exemple separat per a la redirecció stdout i stderr.

Redirecció de l'estandout a un fitxer:

La sortida estàndard es representa amb l'1 a la llista de números del descriptor de fitxers. Per a l'ordre de redirecció sense cap número de descriptor de fitxer, el terminal estableix el seu valor a 1. La sintaxi per redirigir la sortida a un fitxer es dóna de la següent manera:

comandament > dossier

Estem utilitzant el sample.file per emmagatzemar la sortida estàndard de l’ordre ls -al

$ls -al >sample.txt

$gatsample.txt

comandament 1> dossier$ls 1>sample.txt

$gatsample.txt

Redirecció de stderr a un fitxer:

Utilitzeu l'operador 2> per redirigir el stderr a un fitxer.

comandament 2> dossier $ls -al 2>sample.txt

Podem combinar l'execució de stderr i stdout en una sola ordre de redirecció.

comandament 2>error.txt1>output.txt

A l'exemple que es mostra a continuació, els missatges d'error s'emmagatzemaran a error.txt, on output.txt tindrà la sortida estàndard de l'ordre ls.

$ls 2>error.txt1>output.txt

$gatoutput.txt

Conclusió:

Tenir el concepte de redirecció i descriptors de fitxers per a fluxos d'E / S és molt valuós mentre es treballa en un terminal Linux. En aquesta publicació, hem parlat dels fluxos d’entrada / sortida normals, inclosos els stdout i stderr. La primera secció d'aquesta publicació us proporciona informació detallada sobre la redirecció, els fluxos d'E / S i el descriptor de fitxers numèrics. A continuació, heu vist l'exemple pràctic de diverses formes de redirecció stdout i stderr.