ใช้ 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 -อย่างไรก็ตามทุบตีไม่ได้