Cree nuevos archivos en el script Shell usando VIM

Cree nuevos archivos en el script Shell usando VIM

Estoy escribiendo un script para automatizar algunos pasos y necesito crear nuevos archivos de configuración con ubicación y texto predefinidos.

Puedo crear los archivos, sin embargo, no estoy seguro de cómo puedo ingresar el texto y guardar los archivos automáticamente usando VIM.

Ejemplo:

Cree un archivo de configuración /etc/httpd/conf.d/cgi-enabled.confcon el siguiente texto

<Directory "/var/www/html/cgi-enabled">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
</Directory>

y guárdelo, esto me permitiría pasar al siguiente archivo de configuración. Alguna sugerencia ?

Respuesta1

No es necesario comenzar vim, solo use un documento aquí:

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

El texto entre el último delimitador <<END_CONFy el último END_CONFse guardará /etc/httpd/conf.d/cgi-enabled.confmediante la redirección de cat. La elección del delimitador es arbitraria, pero normalmente se utiliza una palabra en mayúscula.

Si tiene variables de shell (o cosas que parecen variables de shell) en el documento aquí ynoSi desea que se reemplacen por sus valores, debe poner entre comillas simples el primero 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

Respuesta2

Si esto es de un script de shell, recomendaría renunciar a vim por completo y en su lugar usar echo, es decir, echo "sample text" > file.cfgesto creará su archivo y lo completará con el contenido necesario.

información relacionada