rmdir to narzędzie, które usuwa wyłącznie puste katalogi. To jego cała filozofia i zarazem największa zaleta: jeśli w katalogu cokolwiek siedzi (plik, podkatalog, ukryty .gitkeep), rmdir grzecznie odmówi i nic nie skasuje. Dzięki temu jest dużo bezpieczniejszy niż rm -r, którym łatwo zmieść pół systemu plików jednym literówkowym ruchem. W praktyce używasz go do sprzątania pustych struktur katalogów, np. po przeniesieniu danych albo w skryptach, które same po sobie posprzątają.
Składnia i najważniejsze opcje
Podstawowa składnia wygląda tak: rmdir [OPCJE] KATALOG...
-p(--parents) — usuwa katalog razem z jego pustymi katalogami nadrzędnymi;rmdir -p a/b/cskasujec, potemb, potema, o ile po drodze każdy okaże się pusty.-v(--verbose) — wypisuje komunikat o każdym przetwarzanym katalogu, żebyś widział, co się właśnie wydarzyło.--ignore-fail-on-non-empty— nie zgłasza błędu, gdy katalog jest niepusty (przydatne w skryptach przy-p, żeby pętla nie wywaliła się na pierwszym pełnym katalogu).--help— wyświetla skróconą pomoc i listę opcji.--version— pokazuje wersję narzędzia (z pakietu GNU coreutils).
Przykłady użycia
rmdir stary_katalog— usuwa pojedynczy pusty katalog. Jeśli coś w nim jest, dostaniesz Directory not empty.rmdir log cache tmp— usuwa kilka pustych katalogów naraz; te niepuste zostaną pominięte z błędem, reszta zniknie.rmdir -p projekt/2026/raporty— kasujeraporty, a następnie2026iprojekt, dopóki kolejne poziomy są puste.rmdir -v build/— usuwa katalog i od razu potwierdza komunikatem, co dokładnie zrobił.rmdir --ignore-fail-on-non-empty -p dane/archiwum— w skrypcie próbuje sprzątnąć całą ścieżkę, ale nie przerywa działania, gdy któryś poziom jest jeszcze zajęty.
Częste błędy i pułapki
Najczęstszy zonk to rmdir: failed to remove 'katalog’: Directory not empty — i to nie jest błąd narzędzia, tylko jego zasada działania. Pamiętaj, że pliki ukryte (zaczynające się od kropki) też się liczą jako zawartość, więc katalog z samym .DS_Store czy .gitkeep nie zostanie usunięty. Klasyczna pomyłka to też rmdir -p a/b w nadziei, że skasuje całe drzewo z plikami — nie, -p idzie tylko po pustych katalogach nadrzędnych. Gdy naprawdę chcesz usunąć katalog z całą zawartością, potrzebujesz rm -r (ostrożnie!). Zachowanie rmdir jest spójne na Linuksie, macOS i BSD, ale niektóre długie opcje (jak --ignore-fail-on-non-empty czy -v) to dodatki GNU coreutils — na macOS i czystym BSD mogą nie istnieć, więc nie licz tam na nie w skryptach.