Jak usunąć katalog i całą jego zawartość?

141

W bash wszystko co wiem to

rmdir directoryname

usunie katalog, ale tylko jeśli jest pusty. Czy istnieje sposób na wymuszenie usunięcia podkatalogów?

piperchester
źródło

Odpowiedzi:

216

Następujące polecenie zrobi to za Ciebie. Zachowaj jednak ostrożność.

rm -rf directoryname
Phillip Nordwall
źródło
52
„-f” to „--force”, które zastępuje niektóre testy poprawności i monitowanie. Bezpieczniejszym poleceniem na początek byłoby rm -r directoryname.
Jim Paris,
Z jakiegoś powodu pojawia się rm: invalid option -- rbłąd podczas próby usunięcia katalogu za pomocą rm -r <nazwa_katalogu>.
Sunspawn
@ Sunspawn Sprawdź to powiązane pytanie, aby zobaczyć, czy tak jest.
Marc.2377,
1
@JimParis Myślę, że słowo „bezpieczniejsze” jest względne. Załóżmy, że piszesz skrypt do uruchomienia na komputerze zdalnym. Ten skrypt ma polecenie, które ma usunąć katalog. W tym przypadku „bezpieczniej” byłoby używać rm -rf directoryname, ponieważ nie chcesz, aby skrypt wstrzymywał wykonywanie, ponieważ czeka na dane wejściowe użytkownika. Oczywiście musisz mieć pewność, że usunięcie katalogu nie zaszkodzi.
John Red,
7

jeśli rm -rf directorynameCi się nie powiedzie, spróbuj użyć rm -R -f directorynamelub rm --recursive -f directoryname.

Jeśli nie masz z nimi szczęścia, powinieneś rozważyć ponowne zainstalowanie rm lub zmianę powłoki.

saterHater
źródło
Były to opcje dostępne na mojej stronie podręcznika użytkownika rm, sprawdziłem to, pisząc, man rmaby wyświetlić moje opcje dotyczące usuwania rekurencyjnego i opcji wymuszenia .
saterHater
Czy twoja rmlista stron man -r? Co to robi? (Wypróbuj w katalogu utworzonym tylko do celów testowych, w którym znajdują się tylko fikcyjne pliki (i może podkatalogi)). Z jakiego systemu operacyjnego korzystasz?
G-Man,
PS Jeśli rm -rnie działa, byłby to problem z systemem operacyjnym, a nie problem z powłoką. (Ściśle mówiąc, byłby to problem z wersją rm, której używasz, więc możesz rozwiązać ten problem, instalując inną wersję rmlub przeszukując system, aby sprawdzić, czy masz już inną wersję rmw katalogu innym niż /bin.)
G-Man,
Ah, tak. Zapomniałem wspomnieć, że korzystam z Ubuntu 14.04. Kiedy uruchomiłem man rmterminal, dostałem plik tekstowy z lessprzeglądarką tekstów. Przewinąłem znalazłem wcięty wpis z całością, która zawierała opcje -R i --recursive wraz z opcją -r , co oznacza, że ​​wszystkie te argumenty są identyczne.
saterHater
1
edycja: próbowałeśsudo rm -r directoryName ? Niepisane reguły podstawowych poleceń -rpozwalają programowi na rekurencyjne uruchamianie na każdym pliku systemu plików (zaczynając od miejsca, w którym wybierzesz!), I że -f będzie zmuszał robić rzeczy, nawet jeśli jest to niebezpieczne . „cd”, „mv”, „ls” w większości utrzymuje tę zasadę jako prawdę. ls -r /będzie duzie i cp -rf / /dev/nullzniszczy wszystko w twoim systemie plików. <- Nigdy nie uruchamiaj tego polecenia!
saterHater