Почему это важно именно вам
Есть задачи, которые выглядят просто, но съедают время именно из-за механической части: открыть файл, выделить нужное, скопировать, вставить в браузер, получить ответ, скопировать обратно. Каждый шаг — пара секунд, но на десяти файлах это уже минуты.
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 без конвертации)
- Нужен диалог с уточнениями
- Файл очень большой (несколько мегабайт текста)
- Нужна интерактивная работа с результатом
Связь с другими уроками
- День 3 — headless-режим (
-p): без него piping в скриптах не работает - День 6 — форматы вывода: получить результат пайпа в JSON для дальнейшей обработки
- День 39 — автоматизация через cron: пайпы + расписание = полностью автономная обработка
Задание на сегодня
Создайте простой конвейер из двух шагов:
echo "Встреча с подрядчиком в пятницу. Обсудили сроки, застряли на бюджете. Подрядчик просит +15% к смете. Решение не принято." | claude -p "оформи как протокол встречи с пунктами: Участники, Обсудили, Открытые вопросы, Следующий шаг"
Если хотите сохранить результат:
echo "Встреча с подрядчиком в пятницу. Обсудили сроки, застряли на бюджете. Подрядчик просит +15% к смете. Решение не принято." | claude -p "оформи как протокол встречи" > протокол.txt
Критерий выполнено: получили структурированный протокол — в терминале или в файле.
Резюме
< файл— передать содержимое файла как stdin в Claude|— передать вывод одной команды в stdin Claude>— записать вывод Claude в файл (перезапись)>>— добавить вывод Claude в конец файла- PDF и Word нужно конвертировать в текст перед передачей через пайп
- Пайпы + цикл
for= массовая обработка файлов без ручного труда