# Пайп: соединяем команды

Курс: Claude Code и терминал: с 0 — https://zero2claude.ru/learn/code-terminal
Канонический URL: https://zero2claude.ru/learn/code-terminal/3-4-pipe

Пайп «|» передаёт вывод одной команды на вход другой и позволяет строить цепочки. Как это работает.

Ты уже умеешь выводить файл (`cat`) и фильтровать строки (`grep`). А что, если соединить их в одну цепочку? Именно для этого существует **пайп** — вертикальная черта `|`.

## Что такое пайп

Пайп (от англ. *pipe* — «труба») передаёт **поток вывода** одной команды прямо на **вход** другой команды. Представь, что вывод первой команды не идёт на экран, а течёт по трубе в следующую команду, которая что-то с ним делает.

Записывается это так:

```
cat log.txt | grep ERROR
```

Читается слева направо:

1. `cat log.txt` — прочитать файл и отправить его содержимое в поток;
2. `|` — направить этот поток дальше;
3. `grep ERROR` — из полученного потока оставить только строки со словом ERROR.

В итоге на экран попадут только строки с ERROR — всё остальное отфильтруется по дороге.

## Почему это так важно

В терминале действует простое правило: каждая команда делает **что-то одно**, но делает это хорошо. `cat` умеет читать, `grep` умеет фильтровать, другие команды умеют сортировать или считать. Пайп позволяет соединять их в **цепочки** — и из маленьких простых команд собирать мощные операции.

```
cat log.txt | grep ERROR | grep падение
```

Здесь поток проходит через два фильтра подряд: сначала остаются строки с ERROR, потом из них — только те, где есть слово «падение». Цепочку можно продолжать сколько угодно.

Часто связку `cat файл | grep слово` можно записать короче: `grep слово файл`. Но пайп незаменим, когда слева стоит команда, у которой нет файла на входе — например, вывод другой программы.

## Попробуй

Прочитай файл `log.txt` и сразу отфильтруй из него только строки с ERROR. Используй пайп: `cat log.txt | grep ERROR`. Когда в выводе появятся строки со словом «сбой», урок зачтётся.
