Odpowiedzi:
Ćwicz bezpieczną obsługę komputera. Po prostu przejdź o jeden poziom wyżej w hierarchii i nie używaj wyrażeń wieloznacznych:
cd ..; rm -rf -- <dir-to-remove>
Dwie kreski --powiedzieć rm, że <dir-to-remove>nie jest to opcja wiersza polecenia, nawet jeśli zaczyna się od myślnika.
rm ./możesz przypadkowo wpisać, rm . /co może być katastrofą.
Usunie wszystkie pliki / katalogi poniżej bieżącego.
find -mindepth 1 -delete
Jeśli chcesz zrobić to samo z innym katalogiem, którego nazwę masz, możesz go po prostu nazwać
find <name-of-directory> -mindepth 1 -delete
Jeśli chcesz usunąć nie tylko jego podkatalogi i pliki, ale także sam katalog, pomiń -mindepth 1. Zrób to bez, -deleteaby uzyskać listę rzeczy, które zostaną usunięte.
-mindepth 1jeśli określasz katalog ( find <name-of-directory> -mindepth 1 -delete). W przeciwnym razie Johannes ma rację, nie usunie bieżącego katalogu roboczego (jeśli jest używany find -delete).
find -mindepth 1 -deleteale mam illegal option -- male działał świetnie, kiedy usunięto opcję mindepth find . -delete
To, co zawsze robię, to pisanie
rm -rf *
a następnie naciśnij ESC- * , a bash rozwinie * do jawnej listy plików i katalogów w bieżącym katalogu roboczym.
Korzyści to:
W rzeczywistości podoba mi się to tak bardzo, że uczyniłem to domyślne zachowanie dla TAB z tym wierszem w .bashrc:
bind TAB:insert-completions
--w tej odpowiedzi? Muszę powiedzieć, że to podejście jest niesamowite.
Posługiwać się
rm -rf *
Aktualizacja: .oznacza bieżący katalog, ale nie możemy tego użyć. Wydaje się, że polecenie ma jawne sprawdzenia dla .i ... Zamiast tego użyj symboli wieloznacznych. Ale to może być ryzykowne.
Bezpieczniejszą wersją IMO jest użycie:
rm -ri *
(to monituje o potwierdzenie przed usunięciem każdego pliku / katalogu).
To prawda, że bezpośrednio rm –rf .usunie wszystko w bieżącym, w tym wszelkie podkatalogi i ich zawartość. Pojedyncza kropka ( .) oznacza katalog bieżący. uważaj, aby tego nie robić, rm -rf ..ponieważ podwójna kropka ( ..) oznacza poprzedni katalog.
Biorąc to pod uwagę, jeśli jesteś podobny do mnie i masz jednocześnie otwartych wiele okien terminala, lepiej bądź bezpieczny i użyj rm -ir .Spójrzmy na argumenty poleceń, aby zrozumieć, dlaczego.
Po pierwsze, jeśli spojrzysz na stronę podręcznika rmpoleceń ( man rmpod większością systemów Unix), zauważysz, że –roznacza to „rekurencyjne usuwanie zawartości katalogów”. Zatem zrobienie tego w rm -r .pojedynkę spowodowałoby usunięcie wszystkiego w bieżącym katalogu i wszystkiego poniżej.
W rm –rf .dodanym -f oznacza „ignoruj nieistniejące pliki, nigdy nie pytaj”. To polecenie usuwa wszystkie pliki i katalogi w bieżącym katalogu i nigdy nie wyświetla monitu o potwierdzenie, że naprawdę chcesz to zrobić. -fjest szczególnie niebezpieczne, jeśli uruchomisz polecenie jako użytkownik z uprawnieniami, ponieważ możesz usunąć zawartość dowolnego katalogu bez możliwości upewnienia się, że naprawdę tego chcesz.
Na otherhand w że zastępuje środki „prompt przed każdym usunięciu”. Oznacza to, że będziesz miał szansę powiedzieć „oups! Nie o to mi chodzi”, zanim rm z radością usunie wszystkie twoje pliki.rm -ri .-i-f
We wczesnych latach sysadmin zrobiłem rm -rf /w systemie będąc zalogowanym z pełnymi uprawnieniami (root). W rezultacie minęły dwa dni na przywrócenie systemu z kopii zapasowych. Dlatego teraz zatrudniam rm -ri.
upewnij się, że jesteś we właściwym katalogu
rm -rf *
Uważam, że ta odpowiedź jest lepsza:
/unix/12593/how-to-remove-all-the-files-in-a-directory
Jeśli wywoływany jest katalog najwyższego poziomu
images, uruchomrm -r images/*. Używa to operatora globalnego powłoki*do uruchamianiarm -rna każdym pliku lub katalogu w obrazach.
w zasadzie przechodzisz o jeden poziom w górę, a następnie mówisz usuń wszystko w katalogu X. W ten sposób nadal określasz, który folder powinien mieć usuniętą zawartość, co jest bezpieczniejsze niż zwykłe powiedzenie „usuń wszystko tutaj”, przy jednoczesnym zachowaniu oryginalnego folderu (co czasami chcesz, ponieważ nie możesz lub po prostu nie chcesz aby zmodyfikować istniejące uprawnienia folderu)