Что такое Heredoc в ОС Linux

Что такое Heredoc в ОС Linux

Heredoc (от англ. here document) — это способ направить многострочный текст непосредственно на ввод команды в ОС Linux. Вместо создания временных файлов для передачи данных, Heredoc позволяет вставить текст прямо в скрипт или терминал, определяя его начало и конец специальными маркерами.

В этой статье мы покажем несколько примеров использования Heredoc в ОС Linux.

Содержание:

  1. Синтаксис Heredoc в Linux
  2. Передача многострочного текста команде cat
  3. Расширение переменных и команд в Heredoc
  4. Heredoc в скриптах Bash
  5. Запись содержимого Heredoc в файл
  6. Использование конвейеров в Heredoc
  7. Выводы

Синтаксис Heredoc в Linux

Базовый синтаксис Heredoc в Linux выглядит следующим образом:

 

Где:

  • command — команда, на ввод которой будет передан текст;
  • << — специальный символ, указывающий оболочке начать читать ввод до появления второго разделителя;
  • delimiter — выбранное слово-разделитель (например, EOF, END, DATA), которое отмечает начало и окончание блока строк;
  • content — передаваемый текст.

Передача многострочного текста команде cat

В качестве простого примера попробуйте передать на вход команды cat две строки, используя в роли разделителя EOF.

Важно: чтобы начать ввод следующей строки, нажмите Enter.

Например:

 

Simple cat heredoc

Команда cat считает содержимое Heredoc и отобразит его в терминале.

Читайте также: 13 примеров команды cat для начинающих в Linux.

Расширение переменных и команд в Heredoc

В тексте Heredoc можно также применять механизмы расширения (от англ. expansion) команд и переменных, которые работают так же, как и в обычном режиме терминала. Для примера заранее создадим две переменные в командной строке:

 

Затем воспользуемся Heredoc, чтобы передать утилите cat соответствующие строки:

 

Variable Expansion

Обратите внимание, что перед переменными мы ставим $. Это указывает оболочке Linux, что нужно вывести не название переменной, а ее значение.

Чтобы использовать команды внутри текста, их нужно заключать в $() для выполнения. Например:

 

Command Expansion

Читайте также: Как сохранить результаты вывода команды в переменную.

Heredoc в скриптах Bash

Heredoc можно использовать в сценариях командной строки. При этом он будет обладать точно тем же функционалом. К примеру:

 

Heredoc inside a bash script

Запись содержимого Heredoc в файл

Синтаксис Heredoc можно модифицировать для выполнения более сложных операций, таких как запись текста в файл. В этом случае синтаксис будет следующим:

 

Где filename — название файла.

Write to file

На скриншоте выше видно, как с помощью Heredoc вставляется многострочный текст в файл file.txt.

Использование конвейеров в Heredoc

Конвейер (труба) в Linux — это способ соединения нескольких команд, при котором вывод одной команды передается как ввод для следующей. Конструкцию Heredoc также можно расширить с помощью труб. Тогда его синтаксис будет следующим:

 

Здесь command — это команда, на вход которой будет передан текст. Допустим, нам нужно найти слово world в трех строках с помощью команды grep. Для этого выполним в терминале:

 

Piping and Heredoc

Читайте также: Примеры использования конвейеров в Linux.

Можем немного усложнить команду и, например, найти в тексте все вхождения слова error и подсчитать их количество:

 

Piping and Heredoc1

Выводы

Heredoc в Linux позволяет передавать многострочный текст на ввод команд без создания временных файлов. Показанные примеры помогут Вам быстро усвоить материал и приступить к использованию Heredoc на практике.

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасностиполный курс по кибербезопасностикурсы DevNet / DevOps (программируемые системы) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики