W starej wersji Uniksa rm
polecenie usuwałoby katalogi, gdyby były puste. Ze strony podręcznika Research Unix Eighth Edition dla rm : „Jeśli wpis jest katalogiem, jest usuwany tylko wtedy, gdy jest pusty”. Podoba mi się to zachowanie, więc mam ten alias /etc/profile
: alias rm='rm -d'
używam wersji GNU coreutils rm
, w której -d
każe rm
iść do przodu i usuwać katalogi, jeśli są puste.
Na razie w porządku. Ten alias pozwala mi używać rm
jak za dawnych czasów. Chciałbym jednak pójść o krok dalej. chciałbymrm
aby usunąć katalog, nawet jeśli katalog zawiera inne katalogi, o ile katalogi są tam jedyne. Nie ma znaczenia, jak głęboka jest struktura katalogów, o ile nie ma tam żadnych plików, po prostu puste (po przejściu na dół) katalogi, chciałbym rm
je wszystkie usunąć.
Czy można to zapisać jako alias, który nadal działałby jako zwykły rm
i usuwał wszelkie przekazywane do niego pliki?
mkdir -p a/b1/c2 && mkdir -p a/b2/c2; rmdir -p a/b1/c1;
, wciąż pozostanie mi a, a / b2 i a / b2 / c2. Chciałbym przekazać tylko najwyższy poziom (w tym przypadku a) rm
i usunąć wszystko poniżej.
rmdir -p
?