vi
es por definición un editor visual.
En este caso, probablemente sea mejor usar otros medios.
Si solo desea agregar esas líneas, haga algo como:
cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF
Esto también funcionará si el archivo aún no existe.
Si desea agregar esas líneas al principio, puede usar ed
que es un editor orientado a líneas:
ed filename.sh <<'EOF'
1i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w
q
EOF
Esto instruye a ed
para insertar líneas en la línea 1; el punto solitario .
en la línea indica el final de la entrada, por lo que la inserción se detiene allí. Finalmente se escribe el archivo (w
) y la sesión de edición se cerró (q
).
Si insiste en usar ed
incluso si el archivo aún no existe (en cuyo caso usaría el cat
ejemplo anterior), puede usar esto:
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 principal diferencia es que no pasa un número de línea con el i
insertar comando, ya que aún no hay líneas; y le pasas un nombre de archivo al w
comando de escritura que es el nuevo archivo.
sed
también se puede usar, pero para tales tareas encuentro ed
más fácil de usar (y de leer lo que sucede).