ที่เป็นวิธีง่ายๆที่จะนำคำพูดเดียว ( ') ที่จุดเริ่มต้นและอีกคำพูดเดียวที่สิ้นสุดและจะแทนที่ทุกตัวละครภายในชื่อไฟล์โดยลำดับ' 4 ตัวอักษร '\''ตัวละครทุกตัวสูญเสียความหมายพิเศษของพวกเขาภายในสตริงที่ยกมาเดี่ยวยกเว้น'ตัวเองซึ่งทำเครื่องหมายจุดสิ้นสุดของสตริง ลำดับ'\''จะลงท้ายด้วยตัวอักษรที่ยกมาเดี่ยวตามด้วยคำพูดเดียวที่ยกมาทันทีและเปิดตัวอักษรที่ยกมาเดี่ยวใหม่ ดังนั้นชื่อไฟล์
This file's name has some weird characters!
Will you manage to escape them?
สามารถยกมาดังนี้:
somecommand 'This file'\''s name has some weird characters!
Will you manage to escape them?'
เครื่องหมายอัญประกาศคู่มีกฎการหลบหนีที่ซับซ้อนมากขึ้นและไม่อนุญาตให้คุณใส่เครื่องหมายอัศเจรีย์!หากเปิดใช้งานการทดแทนประวัติดังนั้นฉันจะไม่พิจารณาสิ่งเหล่านี้เพิ่มเติม
อีกวิธีหนึ่งคือการปกป้องตัวละครด้วยแบ็กสแลช ใช้ได้กับตัวละครทุกตัวยกเว้นการขึ้นบรรทัดใหม่ สำหรับการขึ้นบรรทัดใหม่การใส่ไว้ในเครื่องหมายคำพูดเดี่ยว (หรือเครื่องหมายคำพูดคู่) เป็นคำตอบเดียว หากคุณต้องการลดจำนวนแบ็กสแลชให้น้อยที่สุดเพื่อแสดงชื่อที่ยกมาให้ผู้ใช้คุณสามารถ จำกัด ไว้เฉพาะตำแหน่งที่ต้องการแบ็กสแลช อย่างไรก็ตามยิ่งคุณไม่ได้ใช้แบ็กสแลชมากเท่าใดก็ยิ่งมีความเสี่ยงที่จะลืมสิ่งที่ต้องการ ตัวอักษรตัวเลขและอักขระที่ไม่ใช่ ASCII นั้นใช้ได้เสมอ อ้างอิงช่องว่างและเครื่องหมายวรรคตอนเมื่อใดก็ตามที่คุณไม่แน่ใจ
ด้วยเชลล์ทั่วไป (ksh, bash หรือ zsh) คุณจำเป็นต้องอ้างอิงอักขระต่อไปนี้อย่างน้อยในบางสถานการณ์
- ช่องว่าง (ช่องว่างแท็บขึ้นบรรทัดใหม่ - การจดจำว่าขึ้นบรรทัดใหม่ไม่สามารถอ้างอิงด้วยเครื่องหมายทับขวา)
! - การขยายประวัติ
" - ไวยากรณ์เชลล์
#- ความคิดเห็นเริ่มต้นเมื่อนำหน้าด้วยช่องว่าง; สัญลักษณ์ตัวแทน zsh
$ - ไวยากรณ์เชลล์
& - ไวยากรณ์เชลล์
' - ไวยากรณ์เชลล์
(- แม้ในช่วงกลางของคำ: ksh ขยาย globs (ยังมีอยู่ในทุบตีและ zsh); สัญลักษณ์ตัวแทน zsh
)(ดู()
* - ไวลด์การ์ด
, - เฉพาะการขยายรั้งภายใน
; - ไวยากรณ์เชลล์
< - ไวยากรณ์เชลล์
= - ใน zsh เมื่ออยู่ที่จุดเริ่มต้นของชื่อไฟล์ (การขยายชื่อไฟล์ด้วยการค้นหา PATH)
> - ไวยากรณ์เชลล์
? - ไวลด์การ์ด
[ - ไวลด์การ์ด
\ - ไวยากรณ์เชลล์
] - คุณอาจหนีไปโดยไม่ทิ้งข้อความไว้
^- การขยายประวัติ สัญลักษณ์ตัวแทน zsh
` - ไวยากรณ์เชลล์
{ - การขยายรั้ง
| - ไวยากรณ์เชลล์
} - จำเป็นต้องได้รับการหลบหนีใน zsh กระสุนอื่น ๆ นั้นนิ่มนวลกว่าเมื่อไม่มีการเปิดรั้งที่ตรงกัน
~- การขยายไดเรกทอรีหลักเมื่ออยู่ที่จุดเริ่มต้นของชื่อไฟล์ สัญลักษณ์ตัวแทน zsh; ปลอดภัยเสมอเมื่อเป็นตัวละครตัวสุดท้าย
อักขระอีกสองสามตัวอาจต้องการการจัดการเป็นพิเศษในบางครั้ง:
-ไม่ใช่พิเศษสำหรับเชลล์ แต่เมื่ออยู่ที่จุดเริ่มต้นของอาร์กิวเมนต์คำสั่งจะระบุตัวเลือก ไม่สามารถป้องกันด้วยเครื่องหมายคำพูดได้เนื่องจากการจัดการพิเศษอยู่ในคำสั่งไม่ใช่ในเชลล์ เพื่อป้องกันชื่อไฟล์ที่ขึ้นต้นด้วย-คุณสามารถใส่./ก่อนหน้าได้ด้วยวิธีนี้มันยังคงเป็นไฟล์เดียวกัน แต่อาร์กิวเมนต์ไม่ได้เริ่มต้นด้วย-อีกต่อไป
.ไม่ได้มีความพิเศษในตัวเอง แต่ไฟล์ dot จะถูกแยกออกจาก*globs ตามค่าเริ่มต้น
:ไม่ใช่คำสั่งพิเศษสำหรับเชลล์ แต่คำสั่งบางคำสั่งแยกเป็นพิเศษเช่นเพื่อระบุไฟล์ระยะไกล ( hostname:filename) ศึกษาเอกสารของคำสั่งเพื่อดูวิธีจัดการกับชื่อไฟล์ที่มีโคลอน
¹ เว้นแต่ผู้ใช้กำหนดค่าอักขระส่วนขยายประวัติสำรอง กระสุนบางตัวยอมให้สิ่งนี้ นี่เป็นอีกเหตุผลที่ใช้เครื่องหมายคำพูดเดี่ยวแทนที่จะเป็นแบ็กสแลช