vi
ist per Definition ein visueller Editor.
In diesem Fall ist es wahrscheinlich besser, andere Mittel zu verwenden.
Wenn Sie nur diese Zeilen anhängen möchten, tun Sie so etwas wie:
cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF
Dies funktioniert auch, wenn die Datei noch nicht existiert.
Wenn Sie möchten, dass diese Zeilen am Anfang hinzugefügt werden, können Sie ed
verwenden das ist ein zeilenorientierter Editor:
ed filename.sh <<'EOF'
1i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w
q
EOF
Dies weist ed
an um Zeilen in Zeile 1 einzufügen; der einsame Punkt .
auf der Linie zeigt das Ende der Eingabe an, sodass die Einfügung dort stoppt. Abschließend wird die Datei geschrieben (w
) und die Bearbeitungssitzung wurde beendet (q
).
Wenn Sie darauf bestehen, ed
zu verwenden auch wenn die Datei noch nicht existiert (in diesem Fall würde ich den cat
verwenden Beispiel oben), können Sie dies verwenden:
ed filename.sh <<'EOF'
i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w filename.sh
q
EOF
Der Hauptunterschied besteht darin, dass Sie mit i
keine Zeilennummer übergeben Befehl einfügen, da noch keine Zeilen vorhanden sind; und Sie übergeben einen Dateinamen an w
Schreibbefehl, der die neue Datei ist.
sed
kann auch verwendet werden, aber für solche Aufgaben finde ich ed
einfacher zu verwenden (und zu lesen, was passiert).