Trong phiên bản cũ của Unix, rmlệnh sẽ xóa các thư mục nếu chúng trống. Từ trang man Research Research Eighth Edition cho rm : "Nếu một mục nhập là một thư mục thì nó chỉ bị xóa nếu trống." Tôi thích hành vi này, vì vậy tôi đã có bí danh này /etc/profile: alias rm='rm -d'Tôi đang sử dụng phiên bản GNU coreutils rm, trong đó sẽ -dnói rmtrước và xóa các thư mục nếu chúng trống.
Càng xa càng tốt. Bí danh này cho phép tôi sử dụng rmnhư ngày xưa. Tuy nhiên, tôi muốn tiến thêm một bước nữa. tôi muốnrmđể xóa một thư mục ngay cả khi thư mục chứa các thư mục khác, miễn là thư mục là thứ duy nhất ở đó. Không quan trọng cấu trúc thư mục đi sâu đến đâu, miễn là không có bất kỳ tệp nào trong đó, chỉ là các thư mục trống (một khi bạn xuống đến cuối), tôi muốn rmxóa tất cả chúng.
Điều này có thể được viết dưới dạng bí danh vẫn hoạt động như thường lệ rmvà xóa bất kỳ tệp nào được truyền cho nó không?
mkdir -p a/b1/c2 && mkdir -p a/b2/c2; rmdir -p a/b1/c1;, tôi vẫn còn lại với a, a / b2 và a / b2 / c2. Điều tôi muốn là chỉ vượt qua cấp cao nhất (trong trường hợp này) rmvà xóa mọi thứ bên dưới nó.
rmdir -p?