V operačních systémech podobných Unixu, jako je Linux, MacOS X a BSD, je stderr definován standardem POSIX. Výchozí číslo deskriptoru souboru je 2 .
V terminálu je standardní chyba nastavena na obrazovku uživatele.
Stderr na příkazovém řádku Linuxu
V bash může být standardní chyba přesměrována na příkazovém řádku. Přesměrování stderr může být užitečné, pokud potřebujete zachytit jakékoli chybové zprávy do samostatného souboru protokolu nebo skrýt chybové zprávy úplně.
Zvažte například následující příkaz:
najít / -vnitřní '* něco *'
/ usr / share / doc / něco / usr / share / doc / something / examples / something_random find: `/ run / udisks2 ': Oprávnění bylo odmítnuto najít:` / run / wpa_supplicant': Oprávnění bylo odepřeno / usr / share / something / usr / games / něco
Dostáváme chyby, protože hledání se snaží vyhledat několik systémových adresářů, ke kterým nemáme oprávnění číst. Řádky, které říkají "Oprávnění odepřeno" jsou chybové zprávy a byly zapsány do souboru stderr . Ostatní řádky byly zapsány do stdout (standardní výstup). Ve výchozím nastavení se oba zobrazují na terminálu.
Chcete-li skrýt stderr, můžeme je přesměrovat odkazem na číslo deskriptoru standardního chybového souboru, 2 a operátora "přesměrovaného výstupu", > .
find / -iname '* something *' 2> / dev / null
/ usr / share / doc / něco / usr / share / doc / something / examples / something_random / usr / share / něco / usr / games / něco
Chyby se již nezobrazují, protože veškerý výstup do stderr byl přesměrován na / dev / null, což je speciální zařízení v Linuxu, které „nikam nevede“.
Můžeme také přesměrovat všechny chyby do souboru:
najít / -samostat '* něco *' 2> output.txt
/ usr / share / doc / něco / usr / share / doc / something / examples / something_random / usr / share / něco / usr / games / něco
Pokud se vám zobrazí obsah souboru output.txt, zobrazí se zde chybové zprávy:
cat output.txt
find: `/ run / udisks2 ': Oprávnění bylo odmítnuto najít:` / run / wpa_supplicant': Oprávnění bylo odepřeno
Podrobné informace o přesměrování datových proudů naleznete v tématu přesměrování v bash.
Chybová zpráva, podmínky operačního systému