วิธีสร้างไดเรกทอรีชื่อ '-p' ภายใต้ Linux ด้วย Bash [ซ้ำ]


22

ใน Bash ฉันจะสร้างชื่อไดเรกทอรีได้-pอย่างไร

mkdir -pล้มเหลว
mkdir "-p"ล้มเหลว
mkdir "\-p"ล้มเหลว
mkdir \-pล้มเหลว


1
โปรดทราบว่าสิ่งเหล่านี้กำลังพยายามหลีกเลี่ยงพารามิเตอร์สำหรับการทุบตี เนื่องจากมันเป็นค่า Escape เดียวกับที่ไม่หนีทั้งหมดเหล่านี้ยกเว้นอันที่สามจะส่งสตริง "-p" ไปยัง mkdir ซึ่งจะแยกวิเคราะห์เป็นตัวเลือก ตัวเลือกการแยกวิเคราะห์ไม่ได้ทำในการทุบตีดังนั้นวิธีการใด ๆ รอบ ๆ (อธิบายไว้ในคำตอบด้านล่าง) เป็นคุณลักษณะของ mkdir (หรือค่อนข้างขาดข้อผิดพลาด)
คะแนน _ ต่ำกว่า

11
ต้องถามว่าทำไมคุณต้องการไดเรกทอรีเช่นนี้ มันจะเป็น PITA ที่จะใช้
Daniel R Hicks

3
@DanielRHicks: ฉันสร้างโฟลเดอร์นี้โดยไม่ได้ตั้งใจ แต่ไม่ทราบวิธีลบ
Jichao

4
ถ้าอย่างนั้นคำถามก็คือ "จะลบไดเร็กตอรี่ชื่อ '-p' ภายใต้ Linux with Bash ได้อย่างไร?
chepner

@chepner: เพราะพวกเขามีปัญหาเดียวกันจริง ๆ ฉันพยายามลบไดเรกทอรีด้วยrmdirแต่ล้มเหลวด้วยข้อผิดพลาดเดียวกัน
Jichao

คำตอบ:


40

ยูทิลิตี้ส่วนใหญ่ (POSIX ทั้งหมดที่รองรับยกเว้นtestและecho) รองรับตัวเลือก "สิ้นสุดตัวเลือก" --ดังนั้นคุณจึงสามารถเรียกใช้:

mkdir -- -p

สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อเปลี่ยนชื่อหรือลบไฟล์ที่อาจเริ่มต้นด้วยเส้นประ ในสคริปต์คุณควรใช้เสมอ

mv -- "$filename"

แทนที่จะเป็นmv "$filename"ชื่อไฟล์ธรรมดาหรือแย่ยิ่งกว่านั้นคือชื่อไฟล์ที่ไม่มีคำพูด


3
น่ากลัว นี่เป็นเรื่องดีที่จะรู้
Bruno9779

18

mkdir ./-p

โปรดทราบว่าโปรแกรมอื่น ๆ ส่วนใหญ่จะต้องใช้ "เคล็ดลับ" เดียวกัน

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