Пайпы и перенаправления в Bash: |, > и >>
Проследите путь stdout через grep и wc, сохраните результат в файл и разберите различия между >, >> и кодом завершения pipeline.
Команды как последовательность обработчиков
Команда читает вход и производит выход. Pipe соединяет stdout слева со stdin справа. Это удобно, когда один инструмент выбирает строки, а другой считает их: промежуточный файл для такой передачи не нужен.
В журнале четырёх событий станции cedar и maple встречаются две ошибки. Сначала выберите строки с ERROR, затем подсчитайте переводы строк. Названия станций важны для нашего отчёта, но не меняют устройство pipe.
grep ERROR logs/sensor.log | wc -lПроверка: 2
Когда результат нужен на диске
В обычном режиме Bash оператор > открывает файл для записи и обнуляет прежнее содержимое до запуска команды. Если включена настройка noclobber, перезапись существующего обычного файла через > отклоняется. Оператор >> добавляет вывод в конец. Имя файла обрабатывает shell, а не grep.
Каталог назначения должен уже существовать. Выполните строки по очереди. После cat сравните содержимое отчёта с исходным журналом: INFO-строк в отчёте быть не должно.
mkdir -p report
grep ERROR logs/sensor.log > report/errors.txt
cat report/errors.txtОшибки идут отдельным потоком
Обычный | передаёт stdout. Сообщение о несуществующем файле остаётся в stderr и не становится входными данными следующей команды. Поэтому пустой отчёт может быть следствием ошибки чтения, а не отсутствия событий.
Bash поддерживает отдельные файловые дескрипторы и порядок перенаправлений. В этом тренажёре 2>, 2>&1 и |& не реализованы: движок сообщает об ограничении, вместо того чтобы скрытно менять смысл команды.
Код pipeline не описывает каждый шаг
По умолчанию Bash возвращает код последней команды pipeline. Если grep ничего не нашёл, он возвращает 1, но wc всё равно может успешно посчитать ноль строк. Общий код тогда будет 0.
В реальном Bash set -o pipefail меняет правило: результатом становится код крайней справа неуспешной команды. Эта настройка не делает исправным источник данных и не отменяет уже выполненные операции. В симуляторе используется только правило последнего звена.
Проверьте понимание
До запуска решите, где должен остаться результат: на экране, в новом отчёте или в дополнении к старому. После выполнения прочитайте stderr и файл, а не только число в строке exit. Для наглядного разбора откройте визуальную схему потоков.
Технические источники
Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.
- GNU Bash — перенаправления и pipeline
Проверка текста: 2026-09-05. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.
Основные понятия общие для Linux. Состав утилит, версии и системные настройки зависят от окружения.
От материала к практике
Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.