vi
est par définition un éditeur visuel.
Dans ce cas, il est probablement préférable d'utiliser d'autres moyens.
Si vous souhaitez uniquement ajouter ces lignes, procédez comme suit :
cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF
Cela fonctionnera également si le fichier n'existe pas encore.
Si vous voulez que ces lignes soient ajoutées au début, vous pouvez utiliser ed
qui est un éditeur orienté ligne :
ed filename.sh <<'EOF'
1i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w
q
EOF
Ceci indique ed
pour insérer des lignes à la ligne 1 ; le point solitaire .
sur la ligne indique la fin de la saisie, donc l'insertion s'arrête là. Enfin le fichier est écrit (w
) et la session d'édition quittée (q
).
Si vous insistez pour utiliser ed
même si le fichier n'existe pas encore (auquel cas j'utiliserais le cat
exemple ci-dessus), vous pouvez utiliser ceci :
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 principale différence est que vous ne passez pas de numéro de ligne avec le i
insérer la commande, car il n'y a pas encore de lignes ; et vous passez un nom de fichier au w
commande d'écriture qui est le nouveau fichier.
sed
peut également être utilisé, mais pour de telles tâches, je trouve ed
plus facile à utiliser (et à lire ce qui se passe).