ฉันจะหลีกเลี่ยงชื่อไดเรกทอรีย่อยด้วยเครื่องหมายและในนั้นได้อย่างไร


9

ใช้ kornshell และพยายามสำรวจแผนผังไดเรกทอรี ต้องการ cd ไปยังไดเรกทอรีย่อยชื่อดังนี้

 -3ab_&_-3dc.img

คำถามของฉันคือฉันต้องหลบหนีจากเครื่องหมายและในชื่อนี้ได้อย่างไร ฉันลองชุดคำพูดและแบ็กสแลชที่แตกต่างกันโดยไม่ประสบความสำเร็จ

คำตอบ:


11

สำหรับ&(หรือตัวละครอื่นเกือบคุณมีความเป็นไปได้สองอย่างง่าย ๆ

  • ใส่คำพูดเดียวรอบสิ่งทั้งหมด: ' -3ab_&_-3dc.img'
  • ใส่แบ็กสแลชต่อหน้าตัวละครแต่ละตัวที่มีปัญหา: -3ab_\&_-3dc.img

มีข้อยกเว้นสองประการ:

  • วิธีการเสนอราคาเดียวไม่สามารถใช้ได้กับการเสนอราคาครั้งเดียว แบ็กสแลชไม่ได้พิเศษในเครื่องหมายคำพูดเดี่ยวดังนั้นคุณจึงไม่สามารถใช้สิ่งนั้นได้โดยตรง สิ่งที่คุณสามารถทำได้คือสิ้นสุดสตริงที่มีเครื่องหมายคำพูดเดี่ยวใช้เครื่องหมายแบ็กสแลชและเครื่องหมายคำพูดเดี่ยวทันทีและรีสตาร์ทเครื่องหมายคำพูดเดี่ยว ดังนั้นสำหรับตัวอย่างเช่นถ้าชื่อของไดเรกทอรีคือ:foo'bar\qux cd 'foo'\''bar\qux'คุณสามารถจำได้ด้วยวิธีนั้น: ในเครื่องหมายคำพูดเดี่ยว'\''คุณจะได้รับใบเสนอราคาเดียว
  • แบ็กสแลชเมธอดไม่ทำงานสำหรับการขึ้นบรรทัดใหม่: backslash-newline จะถูกละเว้น คุณต้องใส่เครื่องหมายคำพูดเดี่ยวล้อมรอบบรรทัดใหม่

คุณสามารถใช้เครื่องหมายคำพูดคู่ได้เช่นกัน แต่จากนั้นคุณต้องใส่แบ็กสแลชก่อนอักขระบางตัว คำพูดเดียวง่ายกว่า

มีความยากลำบากเพิ่มเติมที่นี่ซึ่งชื่อของไดเรกทอรีเริ่มต้นด้วยเส้นประ ตัวละครนั้นบอกcdคำสั่ง (เหมือนกับเกือบทุกคำสั่ง) ว่ามีตัวเลือกดังนี้ เครื่องหมายขีดกลางไม่ได้เป็นพิเศษสำหรับเชลล์เพียง แต่กับคำสั่งดังนั้นเครื่องหมายคำพูดจะไม่ส่งผลกระทบต่อเชลล์ คุณมีสองวิธีในการผ่านการโต้แย้งที่เริ่มต้นด้วยการรีบไปที่คำสั่งโดยไม่ต้องตีความมันเป็นตัวเลือก:

  • ค้นหาวิธีอื่นในการแสดงข้อโต้แย้งนี้ สำหรับชื่อไฟล์การเพิ่ม./ด้านหน้ายังคงกำหนดไฟล์เดียวกัน
  • ใส่อาร์กิวเมนต์--ก่อน นั่นบอกให้คำสั่งหยุดค้นหาตัวเลือก

ดังนั้นนี่คือวิธีที่คุณสามารถเปลี่ยนเป็นไดเรกทอรีย่อยนี้:

cd -- '-3ab_&_-3dc.img'
cd -- -3ab_\&_-3dc.img
cd ./-3ab_\&_-3dc.img
cd './-3ab_&_-3dc.img'

ขอบคุณ คิดว่าฉันเคยลองรูปแบบนั้นด้วย แต่ฉันลืมที่จะหนีจากเครื่องหมายและ (เช่นในตัวอย่างที่ 3 ของคุณ) เมื่อฉันทำมันได้ผล
RCinICT

5

เครื่องหมายแอมเปอร์แซนด์นั้นจำเป็นต้องได้รับการหลบหนี แต่ปัญหาที่คุณประสบอยู่นั้นมีแนวโน้มที่จะเป็นผู้นำ-แทนที่จะเป็นแอมเปอร์แซนด์ ที่นำ-แผ่นซีดีที่ทำคิดว่าคุณจะผ่านในตัวเลือก คุณสามารถแก้ไขได้โดยใช้./:

cd './-3ab_&_-3dc.img'

&เป็นปัญหาอย่างแน่นอน ในฐานะที่เป็น-มันขึ้นอยู่กับเปลือก zsh จะมีความสุขมากไอเอ็นจีไปยังไดเรกทอรีที่เริ่มต้นด้วยcd -อย่างไรก็ตามทุบตีไม่ได้
แพทริค

ขอบคุณ คิดว่าฉันได้ลองรูปแบบนั้นด้วย แต่ฉันลืมที่จะหนีจากเครื่องหมายและ เมื่อฉันทำมันได้ผล
RCinICT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.