ฉันอ่านคำถามและคำตอบมากมายเช่นนี้และคำถามนี้
ฉันรู้ว่า wildcards นั้นถูกขยายโดยเชลล์ก่อนที่จะรันคำสั่งและมันเป็นคุณสมบัติของเชลล์ อักขระตัวแทนยังทำงานกับคำสั่งเหล่านั้นที่สามารถยอมรับอาร์กิวเมนต์ได้มากมาย ในfind . -name *.rb
ถ้าเรามีมากกว่าหนึ่งไฟล์ในไดเรกทอรีปัจจุบันfind
จะทำให้เรามีข้อผิดพลาดเพราะการค้นหาไม่สามารถยอมรับข้อโต้แย้งหลาย ๆ และวิธีการแก้ปัญหานี้คือ:
find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb
เราหนีเครื่องหมายดอกจันและป้องกันการขยายโดยเชลล์ แต่อักขระตัวแทนเป็นคุณลักษณะของเชลล์ เมื่อเราหลบหนีเชลล์ดอกจันไม่ทราบความหมายของมันและควรหาไฟล์ชื่อ*.rb
ดังนั้นเครื่องหมายดอกจันจะถูกขยายในกรณีนี้อย่างไร