vi
je z definice vizuální editor.
V tomto případě je pravděpodobně lepší použít jiné prostředky.
Pokud chcete pouze připojit tyto řádky, udělejte něco jako:
cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF
Toto bude také fungovat, pokud soubor ještě neexistuje.
Pokud chcete tyto řádky přidat na začátek, můžete použít ed
což je řádkově orientovaný editor:
ed filename.sh <<'EOF'
1i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w
q
EOF
To dává pokyn ed
vložit řádky na řádek 1; jediná tečka .
na řádku označuje konec vstupu, takže vkládání se tam zastaví. Nakonec je soubor zapsán (w
) a relace úprav byla ukončena (q
).
Pokud trváte na použití ed
i když soubor ještě neexistuje (v takovém případě bych použil cat
příklad výše), můžete použít toto:
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
Hlavním rozdílem je, že s i
nepředáváte číslo řádku příkaz insert, protože zatím nejsou žádné řádky; a předáte název souboru do w
příkaz write, což je nový soubor.
sed
lze také použít, ale pro takové úlohy nacházím ed
snadnější použití (a čtení toho, co se děje).