Мастер Claude · Блок 1. Первые шаги

Урок 5 из 93 · ~10 мин чтения

Piping и stdin: claude как unix-фильтр

Урок пока закрыт

Курс проходится последовательно.

К текущему уроку

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

Есть задачи, которые выглядят просто, но съедают время именно из-за механической части: открыть файл, выделить нужное, скопировать, вставить в браузер, получить ответ, скопировать обратно. Каждый шаг — пара секунд, но на десяти файлах это уже минуты.

Piping — это возможность соединить команды напрямую, без промежуточного копипаста. Результат одной команды становится входом другой. Claude в этой цепочке — просто ещё одно звено: получает текст, обрабатывает, возвращает результат следующей команде или в файл.

Для директора это значит: выгрузили данные из системы, прогнали через Claude, получили готовый отчёт — и всё это одной командой, без открытия браузера и без ручных операций.

Что это такое

В Unix (macOS, Linux) и в Windows PowerShell есть концепция стандартных потоков: stdin (стандартный ввод), stdout (стандартный вывод), stderr (стандартный поток ошибок).

Любая команда может читать из stdin и писать в stdout. Оператор | (пайп) соединяет stdout одной команды со stdin следующей. Оператор < перенаправляет содержимое файла в stdin. Оператор > записывает stdout в файл.

Claude Code поддерживает stdin полностью. Когда вы пишете claude -p "запрос" < файл.txt — Claude читает содержимое файла как часть контекста запроса.

Аналогия: конвейер на заводе. Каждая станция получает деталь, что-то с ней делает, передаёт дальше. Вы не переносите деталь вручную — она едет сама.

Как работает на практике

Базовый ввод из файла

claude -p "проверь грамматику и стиль" < черновик_письма.txt

Claude прочитает весь файл и ответит на запрос с учётом его содержимого.

Сохранение вывода в файл

claude -p "переформатируй как маркированный список" < данные.txt > список.txt

Результат не выводится в терминал — сразу записывается в список.txt.

Дозапись в существующий файл

claude -p "дай одно предложение резюме" < отчёт3.txt >> сводка.txt

Оператор >> добавляет в конец файла, не перезаписывает.

Пайп: передать вывод одной команды в Claude

cat отчёт.txt | claude -p "выдели три главных вывода"

Здесь cat читает файл и передаёт через пайп. Результат такой же, как с <, но синтаксис через пайп позволяет встраивать Claude в более длинные цепочки.

Более сложные цепочки

Допустим, у вас есть CSV с данными продаж, и вы хотите получить только строки с превышением плана:

grep "превышение" продажи.csv | claude -p "отформатируй как таблицу с итогами"

grep фильтрует строки, содержащие слово «превышение», результат передаётся в Claude.

Другой пример: получить последние 50 строк лога и спросить Claude, что там происходит:

tail -50 system.log | claude -p "объясни что происходило в этих событиях, есть ли проблемы"

Передача текста напрямую через echo

Если нужно передать короткий текст без файла:

echo "Иван Петров, менеджер, опоздал на три совещания подряд. Как сформулировать предупреждение?" | claude -p

Или многострочный текст через heredoc:

claude -p "оцени тон письма" << 'EOF'
Уважаемый Александр Николаевич,
в связи с систематическим несоблюдением сроков считаю необходимым...
EOF

stdin как «невидимый файл»

Claude Code при получении данных через stdin добавляет их в контекст запроса автоматически. Вам не нужно явно писать «вот текст, с ним работай» — Claude понимает, что данные из stdin — это материал для работы.

Практический сценарий: еженедельная сводка

Предположим, менеджеры присылают короткие отчёты в папку отчёты/. В конце недели нужна сводка:

cat отчёты/*.txt | claude -p "это отчёты региональных менеджеров за неделю. Составь сводку: что выполнено, что нет, общие тренды" > сводка_$(date +%Y-%m-%d).txt

$(date +%Y-%m-%d) подставляет текущую дату в имя файла. Команда объединяет все файлы из папки, передаёт в Claude, записывает сводку с датой.

Размер контекста

Claude Code имеет ограничение на размер контекста. Если суммарный объём файлов большой — Claude может не взять всё. Для очень больших объёмов лучше обрабатывать файлы по одному в цикле, как показано в Дне 3.

Частые ошибки

Ошибка 1. Передавать бинарные файлы напрямую

.docx, .xlsx, .pdf — это не текст. Передавать их через stdin напрямую не получится. Сначала конвертируйте в текст: для PDF есть pdftotext, для Word — textutil (macOS) или pandoc.

pdftotext договор.pdf - | claude -p "найди все штрафные санкции"

Флаг - в pdftotext означает «вывести в stdout» вместо файла.

Ошибка 2. Забыть флаг -p при использовании пайпа

cat файл.txt | claude "что здесь написано"  # откроет интерактивную сессию
cat файл.txt | claude -p "что здесь написано"  # правильно

Без -p Claude откроет интерактивную сессию и будет ждать ввода.

Ошибка 3. Перепутать > и >>

> перезапишет файл целиком. >> добавит в конец. При сборке сводки из нескольких файлов используйте >>, иначе каждый файл затрёт предыдущий результат.

Ошибка 4. Пайп без учёта кодировки

Если файлы в Windows-1251 (старая кириллица) — Claude получит кашу. Конвертируйте в UTF-8:

iconv -f cp1251 -t utf-8 старый_файл.txt | claude -p "что здесь написано"

Когда нужно / когда нет

Piping и stdin нужны, если:
- Обрабатываете текстовые файлы (.txt, .csv, .md, .html)
- Хотите встроить Claude в цепочку команд
- Нужно сохранить результат в файл автоматически
- Делаете регулярную обработку одного типа данных

Piping не подходит, если:
- Файл бинарный (Word, Excel, PDF без конвертации)
- Нужен диалог с уточнениями
- Файл очень большой (несколько мегабайт текста)
- Нужна интерактивная работа с результатом

Связь с другими уроками

Задание на сегодня

Создайте простой конвейер из двух шагов:

echo "Встреча с подрядчиком в пятницу. Обсудили сроки, застряли на бюджете. Подрядчик просит +15% к смете. Решение не принято." | claude -p "оформи как протокол встречи с пунктами: Участники, Обсудили, Открытые вопросы, Следующий шаг"

Если хотите сохранить результат:

echo "Встреча с подрядчиком в пятницу. Обсудили сроки, застряли на бюджете. Подрядчик просит +15% к смете. Решение не принято." | claude -p "оформи как протокол встречи" > протокол.txt

Критерий выполнено: получили структурированный протокол — в терминале или в файле.

Резюме

Следующий урок откроется после отметки.