Выбор ответа Junior Потоки и пайпы обновлено
stderr и пайп
Вопрос
Команда find / -name "*.conf" | grep nginx засыпает терминал сообщениями Permission denied. Почему grep их не отфильтровал?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Сообщения идут в stderr, а пайп передаёт только stdout. Пайп соединяет только stdout (дескриптор 1).
Варианты ответа
grepпо умолчанию пропускает строки, где есть двоеточие- Сообщения идут в stderr, а пайп передаёт только stdoutправильный ответ
findпишет ошибки прямо в/dev/tty, минуя дескрипторы- Пайп пропускает без фильтра строки длиннее 80 символов
Разбор
Пайп соединяет только stdout (дескриптор 1). Ошибки find пишет в stderr, а он по-прежнему смотрит в терминал. Решения: find / -name "*.conf" 2>/dev/null | grep nginx или 2>&1 |, если ошибки тоже нужно фильтровать. В /dev/tty find не пишет, ограничений по длине строки у пайпа нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.