พูดว่าฉันมีโฟลเดอร์:
./folder/
ข้างในนั้นมีไฟล์จำนวนมากและแม้กระทั่งไดเรกทอรีย่อย
เมื่อฉันรัน:
mkdir -p folder
ฉันจะไม่เห็นข้อผิดพลาดแม้แต่คำเตือน ดังนั้นเพียงแค่ต้องการยืนยันมีอะไรหายไปหรือเปลี่ยนแปลงในคำสั่งนี้หรือไม่?
พูดว่าฉันมีโฟลเดอร์:
./folder/
ข้างในนั้นมีไฟล์จำนวนมากและแม้กระทั่งไดเรกทอรีย่อย
เมื่อฉันรัน:
mkdir -p folder
ฉันจะไม่เห็นข้อผิดพลาดแม้แต่คำเตือน ดังนั้นเพียงแค่ต้องการยืนยันมีอะไรหายไปหรือเปลี่ยนแปลงในคำสั่งนี้หรือไม่?
คำตอบ:
mkdir -p
จะไม่ให้ข้อผิดพลาดแก่คุณหากมีไดเรกทอรีอยู่แล้วและเนื้อหาของไดเรกทอรีจะไม่เปลี่ยนแปลง
if(err.code == 'EEXIST')
นี้เงื่อนไขนี้จะเป็นจริงถ้าไดเรกทอรีมีอยู่แล้ว
สคริปต์แบบพกพาที่จะพึ่งพา POSIX ซึ่งบอกว่าmkdir
's -p
ตัวเลือก:
ตัวถูกดำเนินการdirแต่ละตัวที่ตั้งชื่อไดเรกทอรีที่มีอยู่จะถูกละเว้นโดยไม่มีข้อผิดพลาด
และหากไม่มีรายงานข้อผิดพลาด-p
ตัวเลือกจะทำงาน:
สร้างส่วนประกอบชื่อพา ธ กลางที่ขาดหายไป
mkdir จะให้ข้อผิดพลาดถ้าไดเรกทอรีมีอยู่แล้ว
mkdir -pจะไม่ให้ข้อผิดพลาดถ้าไดเรกทอรีมีอยู่แล้ว นอกจากนี้ไดเรกทอรีจะไม่ถูกแตะต้องนั่นคือเนื้อหาจะถูกเก็บไว้เหมือนเดิม
คุณพูดแบบนั้น
เมื่อฉันรัน
mkdir -p folder
ฉันจะไม่เห็นข้อผิดพลาดแม้แต่คำเตือน
คุณจะเห็นข้อผิดพลาดหากคำสั่งล้มเหลว -p
ธงเพียงยับยั้งข้อผิดพลาดถ้าไดเรกทอรีที่มีอยู่แล้ว
touch x
mkdir -p x
mkdir: cannot create directory ‘x’: File exists
/etc
ปัญหาเดียวกันจะเกิดขึ้นหากคุณพยายามที่จะสร้างไดเรกทอรีที่เป็นผู้ใช้ปกติในการพูด
สิ่งที่-p
จะระงับคือข้อผิดพลาดที่จะถูกเรียกเมื่อไดเรกทอรีเป้าหมายมีอยู่แล้ว
mkdir y
mkdir -p y
อย่างไรก็ตามในทุกกรณีคุณจะไม่สูญเสียอะไรเลยและจะไม่มีอะไรเปลี่ยนแปลง ในสถานการณ์ที่ผิดพลาดคุณจะไม่มีไดเรกทอรีที่คุณคาดหวัง
mkdir -p folder
ฉันจะไม่เห็นข้อผิดพลาดแม้แต่คำเตือน "