Preusmjeri stdout i stderr u datoteku

Redirect Stdout Stderr File



Kada preusmjerite bilo koji izlaz naredbe u datoteku, primijetit ćete da se poruke o pogrešci ispisuju na prozoru terminala. Svaka naredba izvedena u bilo kojoj ljusci Linuxa, kao što je bash, koristi tri redovna I/O toka. Za prikaz svakog toka koristi se numerički deskriptor datoteke.

  • Standardni ulazni tok (stdin): 0
  • Standardni izlazni tok (stdout): 1
  • Standardni tok pogreške (stderr): 2

U ovom ćemo članku shvatiti informacije koje se nalaze pod preusmjeravanjem stdout i stderr u datoteku.







Standardni izlaz (stdout):

Svaki operacijski sustav temeljen na Linuxu ima uvjerenje o zadanom mjestu za izvršenu naredbu. Svi ovaj pojam nazivaju stdout ili standardni izlaz kako bi zvuk bio lakši. Vaša Bash ili Zsh ljuska neprestano traži zadanu izlaznu lokaciju. Kad ljuska otkrije novi izlaz, prikazuje ga na ekranu terminala da biste ga vidjeli. U suprotnom će poslati izlaz na zadano mjesto.



Standardna pogreška (stderr):

Standardna pogreška ili stderr sličan je standardnom ulazu i izlazu, ali se koristi za spremanje poruka o pogrešci. Standardna pogreška može se preusmjeriti na naredbeni redak ili datoteku pomoću terminala. Ako želite snimiti ili pohraniti poruke u zasebnu datoteku dnevnika ili sakriti poruke o pogrešci, preusmjeravanje stderr će vam pomoći. Idemo sada prema praktičnoj strani preusmjeravanja stdout i stderr.



Preusmjeravanje stdout -a i stderr -a u datoteku:

Kako je preusmjeravanje metoda hvatanja programskog izlaza i slanja kao ulaza u drugu naredbu ili datoteku. Ulazno/izlazni tokovi mogu se preusmjeriti stavljanjem u upotrebu operatora n>, gdje je n opisni broj datoteke. Za preusmjeravanje stdout koristimo 1>, a za stderr se 2> dodaje kao operator.





Napravili smo datoteku pod nazivom sample.txt za spremanje preusmjerenog izlaza u naš trenutni direktorij.



(Naredba> datoteka) smatra se klasičnim operatorom preusmjeravanja koji samo preusmjerava standardni izlaz sa standardnom pogreškom prikazanom u terminalu. Pokazat ćemo i različite mogućnosti preusmjeravanja stderr -a.

Preusmjeravanje stderr i stdout na odvojene datoteke:

Ispod je sintaksa naredbe za preusmjeravanje stdout i stderr na odvojene datoteke.

naredba >van2>pogreška

Dolje navedena naredba preusmjerit će izlaz u izlaznu datoteku, a poruke o pogrešci u datoteku pogreške.

$mačkasample.txt>van2>pogreška

Preusmjeravanje stderr -a na stdout:

Uobičajena je praksa preusmjeravanje stderra sa standardnim izlazom programa za spremanje svega u jednu datoteku. Evo sintakse naredbe za preusmjeravanje stderr na stdout:

naredba >van2> &1$ls >samplefile.txt2> &1

$mačkasamplefile.txt

> out redirections preusmjerava stdout na samplefile.txt, a 2> & 1 će preusmjeriti stderr na trenutno mjesto stdout -a.

Ako se stderr prvo preusmjeri na stdout, upotrijebite dolje navedenu naredbu za preusmjeravanje stdouta u datoteku.

naredba 2> &1 > datoteka$ls -prema 2> &1 >samplefile.txt

$mačkasamplefile.txt

&> također se koristi za istu funkcionalnost koju obavlja 2> & 1.

naredba &> datoteka$ls &>samplefile.txt

$mačkasamplefile.txt

Preusmjeravanje stdout -a i stderr -a u jednu datoteku:

Sve ljuske ne podržavaju ovo preusmjeravanje oblika, ali bash i Zsh ga podržavaju. Stdout i stderr mogu se preusmjeriti pomoću sljedeće sintakse.

naredba &>van$mačkasample.txt&>van

U nadolazećem odjeljku članka provjerit ćemo zasebni primjer za stdout i stderr preusmjeravanje.

Preusmjeravanje stdouta na datoteku:

Standardni izlaz predstavljen je s 1 na popisu brojeva deskriptora datoteka. Za naredbu preusmjeravanja bez bilo kojeg broja deskriptora datoteke, terminal je postavio njezinu vrijednost na 1. Sintaksa za preusmjeravanje stdouta u datoteku dana je kako slijedi:

naredba > datoteka

Mi koristimo sample.file za spremanje standardnog izlaza naredbe ls -al

$ls -prema >sample.txt

$mačkasample.txt

naredba 1> datoteka$ls 1>sample.txt

$mačkasample.txt

Preusmjeravanje stderr -a u datoteku:

Koristite operator 2> za preusmjeravanje stderra u datoteku.

naredba 2> datoteka $ls -prema 2>sample.txt

Izvođenje za stderr i stdout možemo kombinirati u jednoj naredbi za preusmjeravanje.

naredba 2>error.txt1>output.txt

U dolje navedenom primjeru poruke o pogrešci bit će pohranjene u datoteci error.txt, gdje će output.txt imati standardni izlaz naredbe ls.

$ls 2>error.txt1>output.txt

$mačkaoutput.txt

Zaključak:

Koncept preusmjeravanja i deskriptora datoteka za I/O tokove vrlo je vrijedan za vrijeme rada u Linux terminalu. U ovom smo postu govorili o redovitim I/O tokovima, uključujući stdout i stderr. Prvi odjeljak ovog posta donosi vam detaljne informacije o preusmjeravanju, I/O tokovima i opisniku numeričkih datoteka. Zatim ste vidjeli praktični primjer za različite oblike stdout i stderr preusmjeravanja.