ใน 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
ล่ะ