В 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"
Эта команда выполняет три действия:
- Она выводит содержимое каталога
/etc. - Она передает этот вывод команде
tee, которая сохраняет копию вetc_listing.txtи также передает ее дальше. - Вывод из
teeзатем передается командеgrep, которая фильтрует строки, содержащие "conf".
Освоение этих команд значительно повысит вашу эффективность в командной строке.