ที่เป็นวิธีง่ายๆที่จะนำคำพูดเดียว ( '
) ที่จุดเริ่มต้นและอีกคำพูดเดียวที่สิ้นสุดและจะแทนที่ทุกตัวละครภายในชื่อไฟล์โดยลำดับ'
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
) ศึกษาเอกสารของคำสั่งเพื่อดูวิธีจัดการกับชื่อไฟล์ที่มีโคลอน
¹ เว้นแต่ผู้ใช้กำหนดค่าอักขระส่วนขยายประวัติสำรอง กระสุนบางตัวยอมให้สิ่งนี้ นี่เป็นอีกเหตุผลที่ใช้เครื่องหมายคำพูดเดี่ยวแทนที่จะเป็นแบ็กสแลช