У Unix-подібних операційних системах, таких як Linux, macOS X і BSD, stderr визначається стандартом POSIX. Номер дескриптора файлу за замовчуванням - 2 .
У терміналі стандартні помилки за замовчуванням відображаються на екрані користувача.
Stderr на командному рядку Linux
У bash стандартна помилка може бути перенаправлена в командному рядку. Перенаправлення stderr може бути корисним, якщо вам потрібно зафіксувати повідомлення про помилки в окремому файлі журналу або повністю приховати повідомлення про помилки.
Наприклад, розгляньте наступну команду:
знайти / -ім'я "* щось *"
/ usr / share / doc / something / usr / share / doc / something / examples / something_random знайти: `/ run / udisks2 ': Відхилено дозвіл:` / run / wpa_supplicant': заборонено / usr / share / something / usr / ігри / щось
Ми отримуємо помилки, оскільки find намагається знайти кілька системних каталогів, які ми не маємо для читання. Рядки, які говорять про "Дозвіл заборонено", є повідомленнями про помилки, і вони були записані в stderr . Інші рядки записувалися у стандартний висновок. За замовчуванням вони обидва відображаються на терміналі.
Щоб приховати stderr, ми можемо перенаправити їх, посилаючись на номер дескриптора файлу стандартної помилки, 2, і оператор "виведення перенаправлення", > .
find / -iname '* something *' 2> / dev / null
/ usr / share / doc / something / usr / share / doc / что-небудь / приклади / something_random / usr / share / something / usr / ігри / щось
Помилки більше не відображаються, тому що весь вивід на stderr був перенаправлений на / dev / null, спеціальний пристрій у Linux, який "нікуди не йде".
Також можна перенаправити всі помилки у файл:
find / -iname '* something *' 2> output.txt
/ usr / share / doc / something / usr / share / doc / что-небудь / приклади / something_random / usr / share / something / usr / ігри / щось
Тепер, якщо ви позначите вміст output.txt, ви побачите повідомлення про помилки, збережені там:
cat output.txt
find: `/ run / udisks2 ': Відхилено дозвіл:` / run / wpa_supplicant': заборонено
Для отримання детальної інформації про те, як перенаправляти потоки даних, див. Перенаправлення в bash.
Повідомлення про помилку, терміни операційної системи