🐧 Как добавить текст в файл в Linux (без текстовых редакторов) |

🐧 Как добавить текст в файл в Linux (без текстовых редакторов)

Мануал

Работа с текстовыми файлами – обычная задача как для администраторов, так и для пользователей Linux.

Хотя такие текстовые редакторы, как nano или vim, являются популярными вариантами, иногда вам может понадобиться добавить содержимое в файл непосредственно из командной строки.

В таких случаях вы можете использовать возможности встроенных инструментов Linux, таких как команды echo и tee.

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

Зачем и когда нужно добавлять текст в файлы напрямую?

В свежеустановленной минимальной системе Linux без подключения к Интернету вам может потребоваться настроить сеть вручную, прежде чем вы сможете получить доступ к онлайн-репозиториям или установить дополнительные инструменты.

Используя echo или tee с документом, вы можете добавить необходимые сведения о конфигурации сети в такие файлы, как /etc/systemd/network/network-config.network или /etc/network/interfaces.

Существует не только настройка IP-адресов, но и несколько ситуаций, когда добавление текста в файл из командной строки с помощью echo, tee или аналогичных инструментов может быть полезным или даже необходимым:

  • Скрипты и автоматизация: При написании скриптов или автоматизации задач зачастую удобнее и эффективнее работать с файлами непосредственно из командной строки, не прибегая к помощи текстовых редакторов, требующих взаимодействия с пользователем.
  • Удаленное администрирование: При администрировании удаленных систем использование инструментов командной строки для добавления текста в файлы может быть более практичным, чем открытие текстового редактора, особенно если вам нужно внести изменения на нескольких серверах.
  • Контейнерные или минимальные среды: В контейнерных или минимальных средах Linux текстовые редакторы могут быть не установлены или не доступны по умолчанию. В таких случаях инструменты командной строки, такие как echo и tee, обеспечивают более быстрый и надежный способ работы с файлами.
  • Конфигурации со скриптами: При развертывании приложений или сервисов, требующих конфигурационных файлов, принято генерировать или изменять эти файлы программно, либо во время установки, либо во время выполнения, используя инструменты командной строки.
  • Интеграция с системой контроля версий: Если вы работаете с файлами под контролем версий (например, Git), добавление содержимого из командной строки может быть легко интегрировано в рабочий процесс разработки, что позволит вам легче фиксировать изменения.
  • Ведение журнала и аудит: В некоторых случаях вам может понадобиться добавлять сообщения журнала или следы аудита в файлы непосредственно из скриптов или команд, не открывая и не редактируя файлы вручную.

Давайте рассмотрим, как использовать команды echo и tee для добавления конфигурации сети непосредственно в файл /etc/systemd/network/ с помощью командной строки.

🐧 Сравнение команд Printf и Echo на Linux

Добавление содержимого в файлы с помощью echo и перенаправления вывода

Команда echo – это мощный инструмент для вывода текста на терминале, а в сочетании с перенаправлением вывода она может использоваться для добавления содержимого в файлы.

Вот как можно использовать этот метод:

echo -e "\[Match\]\nName=enp3s0\n\n\[Network\]\nAddress=192.168.1.100/24\nGateway=192.168.1.1\nDNS=8.8.8.8" | sudo tee -a /etc/systemd/network/20-wired.network > /dev/null

Давайте разберем эту команду:

  • echo -e позволяет интерпретировать обратные косые черты, что дает возможность включать символы новой строки (\n) в текст, заключенный в кавычки.
  • Текст внутри кавычек представляет собой содержимое, которое вы хотите добавить в файл. В данном примере это сетевая конфигурация.
  • Символ | (пайп) перенаправляет вывод echo в команду tee.
  • sudo tee -a /etc/systemd/network/20-wired.network добавляет переданное по трубопроводу содержимое в указанный файл (/etc/systemd/network/20-wired.network). Команда sudo используется для предоставления необходимых разрешений на запись в файл.
  • > /dev/null перенаправляет стандартный вывод tee на нулевое устройство (/dev/null), эффективно отбрасывая его и сохраняя ваш терминал чистым.

Этот метод особенно полезен, когда вам нужно добавить несколько строк текста, так как вы можете включить их все в строку с кавычками, переданную echo.

Приведенная выше команда добавит в файл /etc/systemd/network/20-wired.network следующее.

Вы можете убедиться в этом, просмотрев содержимое файла с помощью команды cat:

cat /etc/systemd/network/20-wired.network
[Match]
Name=enp3s0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8

Добавление текста в файл с помощью команды tee

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

Этот метод может быть более читабельным и удобным при работе с многострочным содержимым.

Вот пример:

sudo tee -a /etc/systemd/network/20-wired.network > /dev/null <<EOF
[Match]
Name=enp3s0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
EOF

Вот что делает каждая часть команды:

  • sudo tee -a /etc/systemd/network/20-wired.network добавляет следующие данные в указанный файл, при этом sudo предоставляет необходимые разрешения.
  • > /dev/null перенаправляет стандартный вывод tee на нулевое устройство, сохраняя ваш терминал чистым.
  • <<EOF начинает документ here, который позволяет вводить несколько строк, пока вы не объявите конец ввода строкой EOF.
  • Вводимый текст написан более естественно, что облегчает его чтение и редактирование по сравнению с экранированными символами новой строки, используемыми в методе 1.

Это лишь примеры.

Вы можете использовать эти методы и в других ситуациях.

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

Метод echo более лаконичен, но может стать менее читабельным для более длинного или сложного содержимого.

Метод here document в целом более читабелен, но требует дополнительного шага для объявления начала и конца ввода.

Оба метода позволяют добавлять содержимое в файлы непосредственно из командной строки в Linux, без необходимости использования текстового редактора.

Как администратор Linux, овладение этими навыками работы с командной строкой может улучшить ваш рабочий процесс и повысить производительность.

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий