Erstellen Sie mit VIM neue Dateien im Shell-Skript

Erstellen Sie mit VIM neue Dateien im Shell-Skript

Ich schreibe ein Skript zur Automatisierung einiger Schritte und muss neue Konfigurationsdateien mit vordefiniertem Speicherort und Text erstellen.

Ich kann die Dateien erstellen, bin mir jedoch nicht sicher, wie ich den Text eingeben und die Dateien mit VIM automatisch speichern kann.

Beispiel:

Erstellen Sie eine Konfigurationsdatei /etc/httpd/conf.d/cgi-enabled.confmit folgendem Text

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

und speichere es, dann könnte ich mit der nächsten Konfigurationsdatei fortfahren. Irgendwelche Vorschläge?

Antwort1

Sie müssen nicht starten vim, verwenden Sie einfach ein Dokument hier:

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

Der Text zwischen <<END_CONFund dem letzten END_CONFTrennzeichen wird /etc/httpd/conf.d/cgi-enabled.confdurch die Umleitung von in gespeichert cat. Die Wahl des Trennzeichens ist beliebig, üblicherweise verwendet man jedoch ein Wort in Großbuchstaben.

Wenn Sie Shell-Variablen (oder Dinge, die wie Shell-Variablen aussehen) im Here-Dokument haben und SienichtWenn Sie diese durch ihre Werte ersetzen möchten, sollten Sie das erste in einfache Anführungszeichen setzen 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

Antwort2

Wenn dies von einem Shell-Skript stammt, würde ich empfehlen, ganz auf vim zu verzichten und stattdessen echo zu verwenden, d. h. dadurch echo "sample text" > file.cfgwird Ihre Datei erstellt und mit dem erforderlichen Inhalt gefüllt.

verwandte Informationen