
Я пишу скрипт для автоматизации нескольких шагов и мне нужно создать новые файлы конфигурации с предопределенным местоположением и текстом.
Я могу создавать файлы, однако не знаю, как вводить текст и автоматически сохранять файлы с помощью VIM.
Пример:
Создайте файл конфигурации /etc/httpd/conf.d/cgi-enabled.conf
со следующим текстом
<Directory "/var/www/html/cgi-enabled">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>
и сохраните его, это позволит мне перейти к следующему файлу конфигурации. Есть предложения?
решение1
Не нужно ничего начинать vim
, просто используйте here-документ:
cat >/etc/httpd/conf.d/cgi-enabled.conf <<END_CONF
<Directory "/var/www/html/cgi-enabled">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>
END_CONF
Текст между <<END_CONF
и последним END_CONF
разделителем будет сохранен в /etc/httpd/conf.d/cgi-enabled.conf
через перенаправление с помощью cat
. Выбор разделителя произволен, но обычно используется слово в верхнем регистре.
Если у вас есть переменные оболочки (или что-то похожее на переменные оболочки) в документе here-document и вынехотите заменить их значениями, вам следует заключить первый элемент в одинарные кавычки END_CONF
:
cat >/etc/httpd/conf.d/cgi-enabled.conf <<'END_CONF'
<Directory "/var/www/html/cgi-enabled">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>
<!-- $HOME will not be expanded here -->
END_CONF
решение2
Если это скрипт оболочки, я бы рекомендовал вообще отказаться от vim и вместо этого использовать echo, т. е. echo "sample text" > file.cfg
он создаст ваш файл и заполнит его необходимым содержимым.