Выбор ответа Middle Потоки и пайпы спрашивают часто обновлено

Порядок перенаправлений 2>&1

Вопрос

Куда попадёт stderr после команды cmd 2>&1 > out.log, запущенной в терминале?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В терминал: при 2&1 дескриптор 1 ещё смотрел туда. Перенаправления выполняются слева направо.

Варианты ответа

  1. В терминал: при 2>&1 дескриптор 1 ещё смотрел тудаправильный ответ
  2. В out.log вместе со stdout, порядок не важен
  3. В никуда: stderr будет потерян после перенаправления
  4. Команда упадёт с синтаксической ошибкой перенаправления

Разбор

Перенаправления выполняются слева направо. 2>&1 копирует текущее назначение дескриптора 1 (терминал) в дескриптор 2, затем > out.log меняет только 1. Чтобы оба потока шли в файл, нужно cmd > out.log 2>&1. Синтаксис корректен, и поток не теряется.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме