
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.conf
mit 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_CONF
und dem letzten END_CONF
Trennzeichen wird /etc/httpd/conf.d/cgi-enabled.conf
durch 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.cfg
wird Ihre Datei erstellt und mit dem erforderlichen Inhalt gefüllt.