Heredoc (от англ. here document) — это способ направить многострочный текст непосредственно на ввод команды в ОС Linux. Вместо создания временных файлов для передачи данных, Heredoc позволяет вставить текст прямо в скрипт или терминал, определяя его начало и конец специальными маркерами.
В этой статье мы покажем несколько примеров использования Heredoc в ОС Linux.
Содержание:
- Синтаксис Heredoc в Linux
- Передача многострочного текста команде cat
- Расширение переменных и команд в Heredoc
- Heredoc в скриптах Bash
- Запись содержимого Heredoc в файл
- Использование конвейеров в Heredoc
- Выводы
Синтаксис Heredoc в Linux
Базовый синтаксис Heredoc в Linux выглядит следующим образом:
Где:
command— команда, на ввод которой будет передан текст;<<— специальный символ, указывающий оболочке начать читать ввод до появления второго разделителя;delimiter— выбранное слово-разделитель (например, EOF, END, DATA), которое отмечает начало и окончание блока строк;content— передаваемый текст.
Передача многострочного текста команде cat
В качестве простого примера попробуйте передать на вход команды cat две строки, используя в роли разделителя EOF.
Важно: чтобы начать ввод следующей строки, нажмите Enter.
Например:
Команда cat считает содержимое Heredoc и отобразит его в терминале.
Читайте также: 13 примеров команды cat для начинающих в Linux.
Расширение переменных и команд в Heredoc
В тексте Heredoc можно также применять механизмы расширения (от англ. expansion) команд и переменных, которые работают так же, как и в обычном режиме терминала. Для примера заранее создадим две переменные в командной строке:
Затем воспользуемся Heredoc, чтобы передать утилите cat соответствующие строки:
Обратите внимание, что перед переменными мы ставим $. Это указывает оболочке Linux, что нужно вывести не название переменной, а ее значение.
Чтобы использовать команды внутри текста, их нужно заключать в $() для выполнения. Например:
Читайте также: Как сохранить результаты вывода команды в переменную.
Heredoc в скриптах Bash
Heredoc можно использовать в сценариях командной строки. При этом он будет обладать точно тем же функционалом. К примеру:
Запись содержимого Heredoc в файл
Синтаксис Heredoc можно модифицировать для выполнения более сложных операций, таких как запись текста в файл. В этом случае синтаксис будет следующим:
Где filename — название файла.
На скриншоте выше видно, как с помощью Heredoc вставляется многострочный текст в файл file.txt.
Использование конвейеров в Heredoc
Конвейер (труба) в Linux — это способ соединения нескольких команд, при котором вывод одной команды передается как ввод для следующей. Конструкцию Heredoc также можно расширить с помощью труб. Тогда его синтаксис будет следующим:
Здесь command — это команда, на вход которой будет передан текст. Допустим, нам нужно найти слово world в трех строках с помощью команды grep. Для этого выполним в терминале:
Читайте также: Примеры использования конвейеров в Linux.
Можем немного усложнить команду и, например, найти в тексте все вхождения слова error и подсчитать их количество:
Выводы
Heredoc в Linux позволяет передавать многострочный текст на ввод команд без создания временных файлов. Показанные примеры помогут Вам быстро усвоить материал и приступить к использованию Heredoc на практике.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.

































