4. Конвейер и tee

В Linux командная строка становится невероятно мощной, когда вы начинаете соединять команды. Вместо того чтобы выполнять одну команду, сохранять ее вывод, а затем выполнять другую, вы можете создать конвейер (pipeline) для прямой передачи данных между ними.

Понимание оператора конвейера (Pipe)

Начнем с команды, которая генерирует много вывода:

ls -la /etc

Список элементов, вероятно, слишком длинный, чтобы поместиться на вашем экране, что затрудняет чтение. Хотя вы могли бы перенаправить этот вывод в файл, более эффективный метод — отправить его напрямую другой команде, например less, для удобного просмотра.

ls -la /etc | less

Оператор конвейера |, представленный вертикальной чертой, является ключом к этому процессу. Он берет стандартный вывод (stdout) команды слева от него и использует его как стандартный ввод (stdin) для команды справа от него. В этом случае мы перенаправили вывод ls -la /etc напрямую в команду less. Конвейер — это фундаментальный инструмент, который вы будете использовать постоянно.

Разделение вывода с помощью команды Tee

Что, если вы хотите одновременно видеть вывод на экране и сохранять его в файл? Здесь на помощь приходит команда tee. Команда pipe and tee в linux — это классическая комбинация для ведения журналов и мониторинга.

ls | tee peanuts.txt

После выполнения этой команды вы увидите вывод ls в вашем терминале. Если вы также проверите содержимое peanuts.txt, вы обнаружите ту же самую информацию. Команда tee эффективно разделяет поток вывода в двух направлениях: одно к стандартному выводу, а другое — к указанному файлу.

Объединение Pipe и Tee

Вы можете создавать еще более сложные рабочие процессы, соединяя эти команды. Распространенный шаблон — использовать pipe to tee в середине более длинной цепочки команд. Это позволяет сохранить промежуточный результат, продолжая при этом обработку данных.

Например, вы можете использовать комбинацию linux pipe tee для просмотра и сохранения вывода перед дальнейшей фильтрацией:

ls -la /etc | tee etc_listing.txt | grep "conf"

Эта команда выполняет три действия:

  1. Она выводит содержимое каталога /etc.
  2. Она передает этот вывод команде tee, которая сохраняет копию в etc_listing.txt и также передает ее дальше.
  3. Вывод из tee затем передается команде grep, которая фильтрует строки, содержащие "conf".

Освоение этих команд значительно повысит вашу эффективность в командной строке.

Войдите, чтобы сохранить ваш прогресс обучения

Вход

Упражнения

Практика ведет к совершенству! Вот несколько практических лабораторных работ для закрепления вашего понимания перенаправления ввода/вывода и конвейеров:

  1. Перенаправление ввода и вывода в Linux - Практикуйтесь в управлении потоком данных из команд, манипулируя стандартным выводом (stdout), стандартной ошибкой (stderr) и стандартным вводом (stdin) с помощью таких операторов, как >, >>, 2>, и команды tee.
  2. Управление последовательностью и конвейер в Linux - Изучите управление последовательностями выполнения команд, использование конвейеров и мощных инструментов обработки текста, таких как cut, grep, wc, sort и uniq.
  3. Перенаправление потоков данных - Изучите искусство перенаправления потоков в Linux, включая манипулирование стандартным вводом, выводом и потоками ошибок, объединение вывода и использование /dev/null.

Эти лабораторные работы помогут вам применять концепции конвейеров и перенаправления в реальных сценариях и повысить уверенность в манипулировании данными в командной строке.

Тест

Какой одиночный символ представляет оператор конвейера (pipe) в команде Linux? Пожалуйста, ответьте только символом.