Różnica między rmdir i rm -r

9

Zwykle usuwam katalogi za pomocą rm :

rm -r myDir

Jednak znam inne polecenie rmdir , które wydaje się wykonywać tę pracę równie dobrze:

rmdir myDir

Jaka jest różnica między tymi dwoma poleceniami i kiedy należy ich używać?

Joe
źródło
2
Czy twój rmdir działa, jeśli w podkatalogu są pliki?
Jeff Schaller
1
Zobacz także tytułowe wywołanie systemowe, rmdir(2)które może usuwać tylko puste katalogi.
David Foerster,
4
Nawiasem mówiąc, istnieje „poprawna” procedura używania rm -r: (1) Wpisz polecenie, ale go nie wprowadzaj (2) Oderwij ręce od klawiatury (3) Policz do pięciu (4) Naciśnij ENTER. Zacząłem robić coś takiego ze wszystkimi niebezpiecznymi poleceniami, aby dać mi szansę spojrzeć na to, co robię, upewnić się, że wpisałem wszystko poprawnie, pomyśleć o ewentualnych nieoczekiwanych konsekwencjach itp. Czasami prowadzi mnie to aby na przykład usunąć moje polecenie i najpierw wykonać dodatkowe kontrole.
ajb
3
@ajb rm -rf ~ /*- wyczyść mój katalog domowy. Lub poczekaj, może wyczyść system. Zawsze dobrze sprawdzić dwukrotnie;).
Tom Carpenter,
1
@ajb Zauważ, że rmdiri rm -rsą to dwa ciągi o tej samej długości :-)
Kusalananda

Odpowiedzi:

14

rm -rusuwa katalog i całą jego zawartość; rmdirusunie katalog tylko wtedy, gdy katalog jest pusty. Lubię używać następujących elementów do usunięcia katalogu i całej jego zawartości:

rm -rf <directory_to_be_removed>
Scott Kayser
źródło
17
Pamiętaj, że zwykle nie powinieneś używać, -fjeśli nie musisz. Jest przydatny do użycia za -rfkażdym razem, ale wyłącza (prawie) wszystkie kontrole bezpieczeństwa.
allo
5
-1 za niepotrzebne zalecenie -fflagi rm, które może mieć nieprzewidywalne, nieodwracalne konsekwencje
kot
Więc rmdirjest po prostu rm -d?
Stan Strum,
@StanStrum -dnie jest standardową opcją dla rm.
Kusalananda
@cat The rmkomendy w ogóle mogą mieć te konsekwencje. -fFlaga jest przydatna podczas pracy pod set -ew skrypcie. Zgadzam się, że używanie bez myślenia jest niepotrzebne .
Kusalananda
1

Powinieneś użyć, rm -rjeśli chcesz rekurencyjnie usunąć katalog i całą jego zawartość, lub gdy celem może być katalog lub plik i chcesz go usunąć bez względu na to, co to jest.

Powinieneś użyć, rmdirgdy chcesz usunąć pusty katalog.

rmdirPolecenie jest użyteczne, ponieważ nie chce usuwać niepuste katalogi i pliki. Służy to jako zabezpieczenie w sytuacjach, w których możesz być absolutnie pewien, że to, co usuwasz, jest katalogiem i że katalog jest pusty przed usunięciem (na przykład w skrypcie) i chcesz traktować go jako warunek błędu Inaczej.

Kusalananda
źródło