В Unix-подобни операционни системи, като Linux, MacOS X и BSD, stderr се определя от стандарта POSIX. Номерът на дескриптора на файла по подразбиране е 2 .
В терминала стандартната грешка по подразбиране е на екрана на потребителя.
Stderr в командния ред на Linux
В bash стандартната грешка може да бъде пренасочена в командния ред. Пренасочването на stderr може да бъде полезно, ако трябва да заснемете съобщения за грешки в отделен регистрационен файл или да скриете изцяло съобщенията за грешки.
Например разгледайте следната команда за намиране :
намери / -име "* нещо *"
/ usr / share / doc / something / usr / share / doc / something / examples / something_random find: `/ run / udisks2 ': Разрешено е разрешение:` / run / wpa_supplicant': Разрешено отказ / usr / share / something / usr / игри / нещо
Получаваме грешки, защото find се опитва да потърси няколко системни директории, които нямаме разрешение да четем. Редовете, които казват „Разрешение за отказ“, са съобщения за грешки и са написани на stderr . Другите линии бяха записани в stdout (стандартен изход). По подразбиране те се показват на терминала.
За да скриете stderr, можем да ги пренасочим, като посочим номера на дескриптора на файла на стандартната грешка, 2 и оператора "изход за пренасочване", > .
find / -iname '* something *' 2> / dev / null
/ usr / share / doc / нещо / usr / share / doc / нещо / примери / some_random / usr / share / нещо / usr / игри / нещо
Грешките вече не се показват, защото всички изходи към stderr бяха пренасочени към / dev / null, специалното устройство в Linux, което „няма никъде“.
Можем да пренасочим всички грешки във файл:
find / -iname '* something *' 2> output.txt
/ usr / share / doc / нещо / usr / share / doc / нещо / примери / some_random / usr / share / нещо / usr / игри / нещо
Сега, ако изтриете съдържанието на output.txt, ще видите съобщенията за грешки, които са били запазени там:
cat output.txt
find: `/ run / udisks2 ': Разрешение е отказано:` / run / wpa_supplicant': Разрешението е отказано
За подробна информация за това как да пренасочите потоци от данни, вижте пренасочване в bash.
Съобщение за грешка, термини на операционната система