2014 m. rugsėjo 2 d., antradienis

Unix shell standartiniai deskriptoriai

Pagal susitarimą UNIX shell‘as naudoja šiuos standartinius deskriptorius:
Pavadinimas Aprašymas Deskriptorius Operatorius
stdin Standartiniam proceso įvedimo failui (klaviatūrai) 0 '<' arba <0
stdout standartiniam išvedimo failui (ekranui) 1 '>' arba '1>'
stderr standartiniam klaidų failui (klaidų pranešimams) 2 '2>'

Pavyzdžiui, išvedant tekstą į tty, galima stdout '>' arba '1>' $ ls /home/ 1> /dev/pts/2 Kai išvedam stderr į dokumentą reikia būtinai nurodyti '2>' $ ls /neegzistuojantis_katalogas 2> klaidos_pranesimas
$ cat klaidos_pranesimas
ls: cannot access /neegzistuojantis_katalogas: No such file or director
Klaidų ir rezultatų išvedimas į atskirus dokumentus:
ls Music/ Negzistuojantis_failas > duomenys 2> klaidos
$ cat duomenys
Music/:
Sound-of-silence
$ cat klaidos
ls: cannot access Negzistuojantis_failas: No such file or directory
Du būdai kai nukreipti stdout ir stderr: ping 127.0.0.1 &>results
strace ls /tmp/ 2>&1 | grep tmp
ping 127.0.0.1 >results 2>&1


Literatūra:
http://www.ila.lt/moduliai/T175B313/lab/html/tinkl_pr_lab2.htm#_Toc96908495