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>errorL'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 > dossierEstem 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.txtA 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.