vi 定義上、ビジュアル エディターです。
この場合、おそらく他の手段を使用する方がよいでしょう。
これらの行のみを追加したい場合は、次のようにします:
cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF
これは、ファイルがまだ存在しない場合にも機能します。
これらの行を最初に追加したい場合は、 ed を使用できます これは行指向のエディターです:
ed filename.sh <<'EOF'
1i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w
q
EOF
これは ed を指示します 行 1 に行を挿入します。孤独な点 . 行の は入力の終わりを示しているため、挿入はそこで停止します。最後にファイルが書き込まれます (w ) 編集セッションが終了しました (q ).
ed の使用を主張する場合 ファイルがまだ存在しない場合でも (その場合は cat を使用します) 上記の例)、これを使用できます:
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
主な違いは、 i で行番号を渡さないことです まだ行がないため、コマンドを挿入します。 w にファイル名を渡します 新しいファイルである write コマンド。
sed も使用できますが、そのようなタスクには ed が見つかります より使いやすく (何が起こっているかを読みやすく) します。