GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Menggemakan Bang!?

Saya mencoba membuat skrip dengan echo memasukkan konten ke dalam file, alih-alih membukanya dengan editor

echo -e "#!/bin/bash n /usr/bin/command args"  > .scripts/command

Keluaran :

bash:!/bin/bash:acara tidak ditemukan

Saya telah mengisolasi perilaku aneh ini.

$ echo !
!  

$ echo "!"
bash: !: event not found

$ echo #!
#!

$ echo #!/bin/bash
bash: !/bin/bash: event not found
  • Mengapa bang menyebabkan ini?
  • Apa yang dimaksud dengan “peristiwa” yang dimaksud bash ini?
  • Bagaimana cara mengatasi masalah ini dan mencetak “#!/bin/bash” ke layar atau file saya?

Jawaban yang Diterima:

Coba gunakan tanda kutip tunggal.

echo -e '#!/bin/bash n /usr/bin/command args'  > .scripts/command

echo '#!'

echo '#!/bin/bash'

Masalahnya terjadi karena bash mencari riwayatnya untuk !/bin/bash. Menggunakan tanda kutip tunggal menghindari perilaku ini.


Linux
  1. /usr/bin Vs /usr/local/bin Di Linux?

  2. Bagaimana Menyebabkan Kesalahan "Daftar argumen Terlalu Panjang"??

  3. Linux – Menggabungkan /usr/bin Dan /usr/sbin Ke /bin (gnu/linux)?

  1. Mengapa /bin/sh Menunjuk Ke /bin/dash Dan Bukan /bin/bash??

  2. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR

  3. Apa perbedaan antara #!/usr/bin/env bash dan #!/usr/bin/bash?

  1. cmake --version menunjuk ke /usr/bin/cmake sementara cmake menunjuk ke /usr/local/bin

  2. Bagaimana bash menguji 'false'?

  3. Memindahkan /bin konten ke /usr/bin, mungkin untuk membatalkan?