Запись в стандартный поток ошибок

Bash:
Запись в стандартный поток ошибок

Как сделать:

# Перенаправление команды echo в стандартный поток ошибок
echo "Ошибка: Неверный ввод." >&2

# Использование printf для записи в стандартный поток ошибок
printf "Ошибка: Файл не найден.\n" >&2

# Пример скрипта, который записывает как в stdout, так и в stderr
echo "Процесс запущен..."
echo "Ой! Что-то пошло не так." >&2
echo "Процесс завершен."

Пример вывода:

Процесс запущен...
Процесс завершен.
Ой! Что-то пошло не так.

В приведенном примере “Ой! Что-то пошло не так.” отправляется в stderr и может отображаться не в том порядке, если смешивается со stdout в терминале, поскольку stderr обычно не буферизуется.

Подробнее

Bash унаследовал концепцию ‘дескрипторов файлов’ из Unix, со stdout как fd 1 и stderr как fd 2. Перенаправление в &2 отправляет вывод в stderr. Исторически, это разделение позволяло более легко управлять и фильтровать вывод, при этом 2>&1 является общим шаблоном для перенаправления stderr в stdout. Жизнеспособной альтернативой явной переадресации является использование logger для интеграции с syslog или настройка скрипта для внутренней обработки ошибок.

Смотрите также