ใช้ kornshell และพยายามสำรวจแผนผังไดเรกทอรี ต้องการ cd ไปยังไดเรกทอรีย่อยชื่อดังนี้
-3ab_&_-3dc.img
คำถามของฉันคือฉันต้องหลบหนีจากเครื่องหมายและในชื่อนี้ได้อย่างไร ฉันลองชุดคำพูดและแบ็กสแลชที่แตกต่างกันโดยไม่ประสบความสำเร็จ
ใช้ kornshell และพยายามสำรวจแผนผังไดเรกทอรี ต้องการ cd ไปยังไดเรกทอรีย่อยชื่อดังนี้
-3ab_&_-3dc.img
คำถามของฉันคือฉันต้องหลบหนีจากเครื่องหมายและในชื่อนี้ได้อย่างไร ฉันลองชุดคำพูดและแบ็กสแลชที่แตกต่างกันโดยไม่ประสบความสำเร็จ
คำตอบ:
สำหรับ&
(หรือตัวละครอื่นเกือบคุณมีความเป็นไปได้สองอย่างง่าย ๆ
' -3ab_&_-3dc.img'
-3ab_\&_-3dc.img
มีข้อยกเว้นสองประการ:
foo'bar\qux
cd 'foo'\''bar\qux'
คุณสามารถจำได้ด้วยวิธีนั้น: ในเครื่องหมายคำพูดเดี่ยว'\''
คุณจะได้รับใบเสนอราคาเดียวคุณสามารถใช้เครื่องหมายคำพูดคู่ได้เช่นกัน แต่จากนั้นคุณต้องใส่แบ็กสแลชก่อนอักขระบางตัว คำพูดเดียวง่ายกว่า
มีความยากลำบากเพิ่มเติมที่นี่ซึ่งชื่อของไดเรกทอรีเริ่มต้นด้วยเส้นประ ตัวละครนั้นบอกcd
คำสั่ง (เหมือนกับเกือบทุกคำสั่ง) ว่ามีตัวเลือกดังนี้ เครื่องหมายขีดกลางไม่ได้เป็นพิเศษสำหรับเชลล์เพียง แต่กับคำสั่งดังนั้นเครื่องหมายคำพูดจะไม่ส่งผลกระทบต่อเชลล์ คุณมีสองวิธีในการผ่านการโต้แย้งที่เริ่มต้นด้วยการรีบไปที่คำสั่งโดยไม่ต้องตีความมันเป็นตัวเลือก:
./
ด้านหน้ายังคงกำหนดไฟล์เดียวกัน--
ก่อน นั่นบอกให้คำสั่งหยุดค้นหาตัวเลือกดังนั้นนี่คือวิธีที่คุณสามารถเปลี่ยนเป็นไดเรกทอรีย่อยนี้:
cd -- '-3ab_&_-3dc.img'
cd -- -3ab_\&_-3dc.img
cd ./-3ab_\&_-3dc.img
cd './-3ab_&_-3dc.img'
เครื่องหมายแอมเปอร์แซนด์นั้นจำเป็นต้องได้รับการหลบหนี แต่ปัญหาที่คุณประสบอยู่นั้นมีแนวโน้มที่จะเป็นผู้นำ-
แทนที่จะเป็นแอมเปอร์แซนด์ ที่นำ-
แผ่นซีดีที่ทำคิดว่าคุณจะผ่านในตัวเลือก คุณสามารถแก้ไขได้โดยใช้./
:
cd './-3ab_&_-3dc.img'
&
เป็นปัญหาอย่างแน่นอน ในฐานะที่เป็น-
มันขึ้นอยู่กับเปลือก zsh จะมีความสุขมากไอเอ็นจีไปยังไดเรกทอรีที่เริ่มต้นด้วยcd
-
อย่างไรก็ตามทุบตีไม่ได้