A standard error

Ha a parancsok hibaüzeneteiket a standard kimenetre írnák, akkor csővezetékbe kötött programoknál egyrészről nem lennének láthatóak a képernyőn (márpedig pont a figyelemfelhívás a funkciójuk), másfelől nem várt eredményeket adnának, amint más programok bemenetére kerülnének. Mindezek miatt a hibacsatornát a normál kimenettől eltérően kezeli a UNIX. A hibacsatorna alapértelmezés szerint szintén a képernyőhöz van rendelve, de akkor is úgy marad, ha a standard outputot átirányították. (Természetesen szükség esetén a standard error csatorna is átirányítható, csak éppen erről is explicit módon kell rendelkezni.)

Az alábbi példapárban a három összefűzött parancs közül a sort rossz opciót kapott, emiatt a terminálra ki is írta a hibaüzenetet, de a standard kimeneten keresztül láthatólag semmit nem adott át ebből a wc programnak, mert az, csövön keresztül kapva ugyanazt a kimenetet, 0 értéket mutat.

 

$ who | sort -X

sort: invalid use of command line options

$ who | sort -X | wc -l

sort: invalid use of command line options

0

$

Csövek elágaztatása: a tee parancs

A cső kapcsán még egy hasznos segédprogramról kell említést tenni, s ez a tee nevű program. A tee bemenetét szintén a standard inputról veszi, de kimenetét két helyre küldi; egyrészt a standard outputra, másrészt a paraméterként megnevezett állományba. Ez elsősorban programbelövéseknél igen hasznos szolgáltatás. A -a opció hatására a paraméterként megadott kimeneti állományt nem írja felül a tee, hanem hozzáfűzi az újabb kimeneti adatokat.

 

$ date | tee temp | wc -l

1

$ cat temp

Thu Mar 28 14:40:04 MET 1991

$

 

Tartalomjegyzék