Cum să redirecționați stderr către stdout în Bash

How Redirect Stderr Stdout Bash



Comenzile din Linux iau o anumită intrare de la utilizator, care ar putea fi un fișier sau orice atribut și, la executare, dau o ieșire numită ieșire standard. Ieșirea standard ar putea fi o ieșire de succes sau o ieșire de eroare; ambele vor fi afișate pe ecranul terminalului. Dar, în unele cazuri, doriți să stocați ieșirile standard într-un fișier pentru testarea sau depanarea codului. În Linux, aceste ieșiri pot fi redirecționate către un fișier, iar procesul de captare a acestuia se numește redirecționare.







Fiecare proces din Linux produce trei fluxuri de date, stdin, stdout și stderr:



  • stdin : Preia date de la utilizator prin intermediul tastaturii
  • stdout : Afișează ieșirea pe ecran
  • stderr : Afișează informații de eroare pe ecran

Fiecare flux de date are un cod numeric:



Numeric Id Nume
0 stdin
1 stdout
2 stderr

Să explicăm redirecționarea puțin mai detaliat:





Cum să redirecționați ieșirea standard și eroarea standard în Bash:

Pentru a redirecționa ieșirea standard a comenzii, vom folosi 1 cu un operator de redirecționare care este mai mare decât semnul>:

$eu sunt 1>stdout.txt

Comanda de mai sus va crea un fișier și va plasa ieșirea standard a comenzii ls în fișierul stdout.txt.



Pentru a citi fișierul stdout.txt, utilizați:

$pisicăstdout.txt

Putem redirecționa și eroarea standard către un fișier folosind comanda:

$pisicămyfile.txt2>stderr.txt

Pentru a vizualiza fișierul stderr.txt, utilizați:

$pisicăstderr.txt

Asigurați-vă că utilizarea 2 va fi mai mare decât semnul>. Deoarece nu există fișier myfile.txt în director, comanda cat va da o eroare care va fi adăugată în fișierul stderr.txt.

Aceste ieșiri standard pot fi redirecționate cu o singură comandă, de asemenea, utilizați:

$eu sunt 1>stdout.txt2>stderr.txt

Ieșirea comenzii ls va fi scrisă în stdout.txt fișier, dar stderr.txt va rămâne gol, deoarece nu ar exista nicio eroare.

Acum să facem pentru stderr.txt:

$pisicămyfile.txt1>stdout.txt2>stderr.txt

Utilizați comanda menționată mai jos pentru a citi stderr.txt.

$pisicăstderr.txt

Și, desigur, stdout.txt va fi gol.

Concluzie :

Comanda Linux la executare oferă ieșire standard care ar putea fi o ieșire de succes sau o ieșire de eroare. În general, aceste ieșiri nu pot fi redirecționate folosind operatori de redirecționare; trebuie să folosim ID-uri numerice specifice cu semnul>. În acest ghid, am învățat cum să folosim aceste taste numerice pentru a redirecționa ieșirea standard către un fișier cu exemple.