行を追加してインプレースでファイルを編集したいのですが、まだ存在しない場合に限り、スクリプトを完全なものにします。
通常、私は次のようなことをします:
cat >> ~/.bashrc <<EOF
export PATH=~/.composer/vendor/bin:\$PATH
EOF
ansible(line
+ insertafter=EOF
+ regexp
)を介してそれを行うことも可能ですが、それは別の話です。
vi / exでは、次のようなことができます。
ex +'$s@$@\rexport PATH=\~/.composer/vendor/bin:$PATH@' -cwq ~/.bashrc
しかし、理想的には同じ行を繰り返さずに、行が既に存在する(したがって何もしない)かどうかを確認するにはどうすればよいですか?
それともExエディタでそれを行う簡単な方法がありますか?
ex ~/.bashrc -c "if search('export PATH=\~\/.composer\/vendor\/bin:\$PATH')>0 | norm quit | endif | norm Aexport PATH=~/.composer/vendor/bin:$PATH"
export
あるコマンドラインの残りの部分はシェル語、NOT割り当てているので、。したがって、(を使用しないexport
)変数の割り当てとは異なり、二重引用符が必要です。そうしないと、空白で分割されます。PATHにパスを正しく追加する方法も参照してください。
grep -Fq 'export PATH=~/.composer/vendor/bin:$PATH' ~/.bashrc || ex ...
(またはcat
、そのことについて)?