tl;dr: ไม่ใช่ช่องว่าง แต่เป็นวงเล็บ1
เดอะ หา
คำสั่ง -ชื่อ
การทดสอบใช้การแสดงออกของเชลล์โกลบอล - การเพิ่มเครื่องหมายคำพูดรอบอาร์กิวเมนต์จะป้องกันไม่ให้อักขระพิเศษของโกลบอลถูกตีความโดยคุณ เปลือก, แต่ หา
ยังคงต้องการให้พวกเขาหลบหนี
อดีต.
$ touch 'ชื่อไฟล์ที่มี [วงเล็บ] อยู่ในนั้น'
$ หา. -name 'ชื่อไฟล์ที่มี [วงเล็บ] อยู่ในนั้น'
$
(ไม่มีผลลัพธ์ - เพราะ [วงเล็บ]
หมายถึงอักขระใด ๆ ในชุด ข
, ร
, ก
, ค
, เค
, อี
, ที
, ส
); ในทางตรงกันข้าม
$ หา. -name 'ชื่อไฟล์ที่มี \[วงเล็บ\] อยู่ในนั้น'
./filename ที่มี [วงเล็บ] อยู่ในนั้น
หากคุณจำเป็นต้องนำสิ่งนี้ไปใช้แบบเป็นโปรแกรม คุณอาจใช้ bash shell's พิมพ์ฉ
ในการเพิ่ม Escape ที่จำเป็น:
$ element='ชื่อไฟล์ที่มี [วงเล็บ] อยู่ในนั้น'
$ หา. -ชื่อ "$(printf '%q' "$element")"
./filename ที่มี [วงเล็บ] อยู่ในนั้น
อย่างไรก็ตาม คุณจะมีปัญหากับช่องว่างในบรรทัด
สำหรับ EmptyDir ใน `find ~/Desktop/ ~/Downloads/ -empty -type d`; ทำ
ดู เหตุใดการวนซ้ำผลลัพธ์ของการค้นหาจึงเป็นการปฏิบัติที่ไม่ดี
ยังมีอีกหลายประเด็นเช่นที่ยกมา ~
ใน [ ! -d "~/.ดาวน์โหลด" ]
จะไม่ขยายไปถึง $บ้าน
- โดยทั่วไปคุณควรหลีกเลี่ยง ~
ในสคริปต์