Saya ingin mengedit file di tempat dengan menambahkan baris, hanya jika belum ada untuk membuat script saya anti peluru.
Biasanya saya akan melakukan sesuatu seperti:
cat >> ~/.bashrc <<EOF
export PATH=~/.composer/vendor/bin:\$PATH
EOF
Dimungkinkan juga untuk melakukannya via ansible ( line
+ insertafter=EOF
+ regexp
), tapi ini cerita lain.
Dalam vi / ex saya bisa melakukan sesuatu seperti:
ex +'$s@$@\rexport PATH=\~/.composer/vendor/bin:$PATH@' -cwq ~/.bashrc
tetapi kemudian bagaimana saya memeriksa apakah saluran sudah ada (dan dengan demikian tidak melakukan apa-apa) idealnya tanpa mengulangi baris yang sama?
Atau mungkin ada beberapa cara yang lebih mudah untuk melakukannya di Ex editor?
ex ~/.bashrc -c "if search('export PATH=\~\/.composer\/vendor\/bin:\$PATH')>0 | norm quit | endif | norm Aexport PATH=~/.composer/vendor/bin:$PATH"
export
adalah perintah , jadi sisa baris adalah kata shell, BUKAN tugas. Karena itu tidak seperti dengan penugasan variabel (yang tidak digunakan export
), Anda perlu tanda kutip ganda atau itu akan pecah di spasi putih . Juga lihat Cara menambahkan jalur ke PATH dengan benar .
grep -Fq 'export PATH=~/.composer/vendor/bin:$PATH' ~/.bashrc || ex ...
(ataucat
, dalam hal ini)?