heredoc и herestr в bash
В Python, например, есть встроенная конструкция
''' ... '''
, но в bash есть особые идиомы встроенных документов (here-document/heredoc) и встроенных строк (here-string/herestr), позволяющие хранить и отображать блоки текста с минимумом разделителей/команд.
Heredoc
Синтаксис heredoc:
[fd]<<[-]["']word['"]
# [] - optional things
fd --> редко используемый идентификатор файла
дефис (-) --> удаляет начальные табуляции (не пробелы). Он позволит оформить встроенный документ с отступами (но только табами), которые автоматически удалятся при выводе.
кавычки --> выключают интерполяцию содержимого. Без кавычек можно юзать переменные.
word не подлежит расширению с помощью параметров/переменных/имен файлов/подстановке команд/арифметическим операциям. word не может быть переменной.
То есть в heredoc не сработает:
cat << $(ls) # !! НЕ работает
cat <<< $(ls) # Работает
Поэтому heredoc подходит для отображения справочной инфы (вместо использования множества echo/printf/кавычек).
Herestr
Синтаксис herestr:
[fd]<<<word
# [] - optional things
В word возможны расширения параметров/переменных, подстановки команд/арифметические операции. Это, по сути, более простой heredoc без разделителя с \n
в конце.
Соус: Книга "Идиомы Bash" --> Глава 5. "Файлы и не только" --> "Встроенные документы и строки"