vi
è per definizione un editor visuale.
In questo caso è probabilmente meglio usare qualche altro mezzo.
Se vuoi solo aggiungere quelle righe, fai qualcosa come:
cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF
Funzionerà anche se il file non esiste ancora.
Se vuoi che queste righe vengano aggiunte all'inizio, puoi usare ed
che è un editor orientato alla riga:
ed filename.sh <<'EOF'
1i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w
q
EOF
Questo istruisce ed
inserire righe alla riga 1; il punto solitario .
sulla riga indica la fine dell'input, quindi l'inserimento si ferma lì. Infine viene scritto il file (w
) e la sessione di modifica è stata chiusa (q
).
Se insisti nell'usare ed
anche se il file non esiste ancora (nel qual caso userei il file cat
esempio sopra), puoi usare questo:
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
La differenza principale è che non passi un numero di riga con i
inserire il comando, poiché non ci sono ancora righe; e passi un nome file al w
comando di scrittura che è il nuovo file.
sed
può anche essere usato, ma per tali compiti trovo ed
più facile da usare (e da leggere cosa sta succedendo).