Šta znači “> /dev/null 2>&1″?
15.07.2008. 11:50
Linux administracija: tips & tricks
15.07.2008. 11:50
Pretpostavljam da nisam jedini Unix/Linux korisnik koji se ikada pitao šta predstavljaju one nerazumljive kuke i kvake na kraju komande. Često se koriste u primerima kako nešto podesiti i uraditi, ali bez objašnjenja šta TO zapravo znači. Kao da se (pobogu) podrazumeva da to svi moraju da znaju. Ili je to svojevrsni potpis po kome se prepoznaje pravi “Linux g33k”?
Epa, evo objašnjenja.
Redirekcija izlaza
Primer:
ls > pera.txt
Znak veće (>) u komandama poput ove vrše redirekciju izlaza programa ili komande negde drugde umesto na podrazumevani izlaz. U našem slučaju, komanda ls bi ispisala svoj izlaz na ekranu (tzv. standardni izlaz) ali je redirektovana na fajl pera.txt.
Standardni ulaz i izlaz i standardni izlaz za greške
Postoje tri standardna toka za ulaz i izlaz nekog programa. Standardni ulaz često dolazi sa tastature u slučaju interaktivnih programa, iz nekog fajla, ili iz drugog programa (tzv. protočna obrada, ali nećemo sad o tome). Program najčešće ispisuje svoj izlaz na standardni izlaz (monitor), i ponekad ispisuje i na standardni izlaz za greške (što je najčešće opet monitor). Ovo su tri standardna toka na Unix/Linux platformama i najčešće se nazivaju STDIN, STDOUT, i STDERR.
Šta su ti tokovi!? Zamislite tokove (engl. streams) kao vrstu vodovodnih cevi, samo što njima teku podaci a ne voda. Kad “vode” nema, ne teče ništa ali su cevi i dalje tu i čekaju. Na primer, ako je bojler program, on ulazne podatke dobija iz standardnog ulaznog toka, obrađuje ih (zagreva vodu), svoj izlaz šalje na obradu drugom programu: tuš-kabini (tj. izlaz bojlera je preusmeren sa standardnog toka na interni tok između dva programa). Izlaz iz tuš-kabine završava u standardnom toku za izlaz.
Tokovi ponekad nisu imenovani, nego numerisani. Standardna numeracija strandardnih tokova je 0, 1 i 2, u tom redosledu (SRDIN, STDOUT, STDERR). Ako tok nije imenovan ili numerisan eksplicitno, usvojeno je da se radi o toku STDOUT.
E sad:
ls > /dev/null 2>&1
U ovom kontekstu, možemo videti da komanda vrši redirekciju standardnog izlaza u /dev/null, što je mesto gde možete poslati sve što vam ne treba (u računarskom žargonu često nazvan bit-bucket), a zatim se redirektuje standardni izlaz za greške u standardni izlaz.
Dakle, prosto rečeno, na ovaj način svaki izlaz i svaka greška završavaju u “crnoj rupi”. Ovo je jedan od često korišćenih načina da se program učini vrlo tihim.
Napišite komentar!
Kategorija: Linux administracija: tips & tricks
- Dodaj ovaj post na
- Del.icio.us -
- Meneame -
- Digg