Шпаргалки / Объяснение

Шпаргалка: направлять stdout и stderr в правильном порядке

Проследите дескрипторы 0, 1 и 2, различайте замену файла и добавление и разберите порядок перенаправлений Bash на безопасном потоке.

Начальный6 минОбщие принципы LinuxGNU Coreutils · documented stable optionsBash · pipeline semantics

Когда открыть эту шпаргалку

Перенаправление выполняет оболочка до запуска программы. Оно может открыть или обнулить файл даже тогда, когда сама программа затем завершится ошибкой. Порядок операторов имеет значение: дублирование дескриптора фиксирует его назначение в данный момент.

Выбор команды

В таблице cmd — обозначение команды, а не готовая утилита. Для вывода в файл выбирайте отдельный путь, содержимое которого допустимо заменить.

Что выяснитьКоманда или выражениеКак читать результат
Подать файл на stdincmd < input.txtДескриптор 0 читает файл.
Заменить файл результатомcmd > output.txtДескриптор 1; прежнее содержимое назначения обнуляется.
Добавить stderrcmd 2>> errors.logОткрывается режим добавления для дескриптора 2.
Объединить два потока в файлcmd > combined.log 2>&1Сначала stdout направлен в файл, затем stderr дублирует его.
Сохранить только stdout в файлcmd 2>&1 > only-output.logstderr остаётся направлен туда, куда stdout смотрел до перенаправления.

Короткая последовательность

Группа отправляет одну строку в stdout и другую в stderr. Только stdout проходит через pipeline в wc; файловые назначения отсутствуют.

Локальная Linux-система
{ printf 'result\n'; printf 'diagnostic\n' >&2; } | wc -l

Проверка вывода

wc должен посчитать одну строку, а diagnostic остаётся в stderr. Очередность отображения этих двух частей не является надёжным порядком событий: разные потоки могут буферизоваться независимо.

Границы применения

Конструкция 2>&1 копирует направление дескриптора, а не создаёт вечную связь с будущими изменениями stdout. Не используйте один файл одновременно как вход и назначение через >. Применение tee также требует понимания перезаписи и статусов звеньев.

Технические источники

Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.

  • Руководство bash(1)
  • Руководство pipe(7)

Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.

Примеры для собственной Linux-системы с Bash и указанными утилитами. Наличие пакетов и набор опций проверьте в установленной версии; браузерный терминал поддерживает только своё подмножество.

От материала к практике

Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.

Поиск по Linux

Поиск локальный. ↑ ↓ — перейти к результату, Enter — открыть.

Навигация