ใน Unix เวอร์ชันเก่าrmคำสั่งจะลบไดเรกทอรีถ้าว่างเปล่า จากหน้าคู่มือการวิจัย Unix Eighth Edition สำหรับ rm : "ถ้ารายการเป็นไดเรกทอรีรายการนั้นจะถูกลบออกหากว่างเปล่า" ฉันชอบพฤติกรรมนี้ดังนั้นฉันจึงมีนามแฝงนี้ในของฉัน/etc/profile: alias rm='rm -d'ฉันใช้รุ่น GNU coreutils rmซึ่ง-dบอกrmให้ไปข้างหน้าและลบไดเรกทอรีหากไม่มี
จนถึงตอนนี้ดีมาก นามแฝงนี้อนุญาตให้ฉันใช้rmเหมือนวันเก่า ๆ อย่างไรก็ตามฉันต้องการที่จะก้าวไปอีกขั้น ฉันต้องการrmเพื่อลบไดเรกทอรีแม้ว่าไดเรกทอรีนั้นจะมีไดเรกทอรีอื่นอยู่ตราบใดที่ไดเรกทอรีมีเพียงสิ่งเดียว ไม่สำคัญว่าโครงสร้างไดเรกทอรีจะลึกแค่ไหนหากไม่มีไฟล์อยู่ในนั้นเพียงแค่ว่างเปล่า (เมื่อคุณไปถึงด้านล่าง) ไดเรกทอรีฉันต้องการrmลบออกทั้งหมด
สิ่งนี้สามารถเขียนเป็นนามแฝงซึ่งจะยังคงทำงานเหมือนปกติrmและลบไฟล์ใด ๆ ที่ส่งไปหรือไม่
mkdir -p a/b1/c2 && mkdir -p a/b2/c2; rmdir -p a/b1/c1;ฉันยังเหลือ a, a / b2 และ a / b2 / c2 สิ่งที่ฉันต้องการคือการส่งระดับสูงสุด (ในกรณีนี้) ไปยังrmและลบทุกอย่างด้านล่าง
rmdir -pล่ะ