Ты уже умеешь выводить файл (cat) и фильтровать строки (grep). А что, если соединить их в одну цепочку? Именно для этого существует — вертикальная черта |.
Что такое пайп
Пайп (от англ. pipe — «труба») передаёт поток вывода одной команды прямо на вход другой команды. Представь, что вывод первой команды не идёт на экран, а течёт по трубе в следующую команду, которая что-то с ним делает.
Записывается это так:
cat log.txt | grep ERROR
Читается слева направо:
cat log.txt— прочитать файл и отправить его содержимое в поток;|— направить этот поток дальше;grep ERROR— из полученного потока оставить только строки со словом ERROR.
В итоге на экран попадут только строки с ERROR — всё остальное отфильтруется по дороге.
Почему это так важно
В терминале действует простое правило: каждая команда делает что-то одно, но делает это хорошо. cat умеет читать, grep умеет фильтровать, другие команды умеют сортировать или считать. Пайп позволяет соединять их в цепочки — и из маленьких простых команд собирать мощные операции.
cat log.txt | grep ERROR | grep падение
Здесь поток проходит через два фильтра подряд: сначала остаются строки с ERROR, потом из них — только те, где есть слово «падение». Цепочку можно продолжать сколько угодно.
Часто связку cat файл | grep слово можно записать короче: grep слово файл. Но пайп незаменим, когда слева стоит команда, у которой нет файла на входе — например, вывод другой программы.
Попробуй
Прочитай файл log.txt и сразу отфильтруй из него только строки с ERROR. Используй пайп: cat log.txt | grep ERROR. Когда в выводе появятся строки со словом «сбой», урок зачтётся.