Saya membaca banyak pertanyaan dan jawaban seperti ini dan ini
Saya tahu wildcard diperluas oleh shell sebelum menjalankan perintah dan mereka adalah fitur shell. Juga wildcard berfungsi dengan perintah-perintah yang dapat menerima banyak argumen. Dalam find . -name *.rb
jika kita memiliki lebih dari satu file dalam direktori saat ini find
akan memberi kita error karena menemukan tidak dapat menerima beberapa argumen dan cara untuk mengatasi ini adalah:
find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb
Kami lolos dari tanda bintang dan mencegah ekspansi oleh shell tetapi wildcard adalah fitur dari shell; ketika kita keluar dari shell asterisk tidak tahu artinya, dan itu harus menemukan file bernama *.rb
, jadi bagaimana asterisk diperluas dalam kasus ini?
*
dikutip, maka shell tidak akan memperluasnya, dan argumen termasuk glob dilewatkan ke perintah yang dapat memahami glob - itu sama untuk setiap perintah yang menerima regex yang harus selalu dikutip ...find
[archive filename single argument] [list of files to extract]
") misalnya.