Создание новых файлов в скрипте Shell с использованием VIM

Создание новых файлов в скрипте Shell с использованием VIM

Я пишу скрипт для автоматизации нескольких шагов и мне нужно создать новые файлы конфигурации с предопределенным местоположением и текстом.

Я могу создавать файлы, однако не знаю, как вводить текст и автоматически сохранять файлы с помощью 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он создаст ваш файл и заполнит его необходимым содержимым.

Связанный контент