Jak usunąć folder o nazwie * in / from bash?

8

Powiedzmy, że mam folder o nazwie * pod /. Wiem, że wspólne polecenia, takie jak rm -rf *, nie będą działać. Jakaś pomoc?

user160936
źródło
2
Technicznie rm * zadziała, aby usunąć ten folder.
Colonel Panic

Odpowiedzi:

7

użyj tego krótkiego polecenia:

rm /\*
Serge
źródło
1
To nie zadziała - to katalog.
naught101
1
Następnie użyj 'rmdir / *'. Inną opcją jest użycie 'rm -rf / *'. Ale czy ten drugi jest niebezpieczny, jeśli popełnisz błąd.
Serge
14

Można pojedynczo cytować argumenty, aby zapobiec przetwarzaniu przez powłokę.

rm -r '/*'

Przetestuj go bezpiecznie za pomocą ls (w folderach zawierających pliki):

$ ls '*'
ls: *: No such file or directory

W tym przypadku podwójne cudzysłowy również będą działać, ale jeśli będzie $ zaangażowani, nie zrobiliby tego, ponieważ powłoka zakładałaby, że jest to zmienna:

$ ls "foo$bar"
ls: foo: No such file or directory
$ ls 'foo$bar'
ls: foo$bar: No such file or directory

Dla GNU rm, możesz również dodać -- przed argumentami nazwy pliku, aby zapobiec ich analizowaniu jako argumentów. Umożliwi to usunięcie nazwanych plików -rf bez problemów.

Daniel Beck
źródło
Nie wymagane. Możesz po prostu uciec od '*', więc nie jest rozszerzany przez powłokę, jak odpowiedział Serge.
darnir
5
@darnir Nie musisz go używać, jeśli ci się nie podoba. Ale musisz wiedzieć, które postacie uciec, używając podejścia Serge'a (rozważ & ) i unikaj ich indywidualnie, co może łatwo stać się większym wysiłkiem niż cytowanie raz. Dlatego uważam, że osoba uciekająca niżej i opublikowała tę alternatywę.
Daniel Beck
3
@Serge Nie mówię, że twoja odpowiedź jest zła. Robi to zadanie i było przyjęty . Jeśli jednak istnieje wiele (rozsądnie różnych) sposobów na osiągnięcie czegoś z różnymi zaletami i wadami, możesz je wszystkie wymienić. Mogą nie działać we wszystkich sytuacjach, więc dobrze jest mieć alternatywę do wyboru. Pamiętaj również, że użytkownicy z podobny (nie identyczne) problemy mogą pojawić się na pytanie Google. To także dobry pomysł poszerzyć zakres jeśli prowadzi do pytań, które mogą pomóc większej liczbie osób. Pisanie szerszych odpowiedzi to początek.
Daniel Beck
1
Nie miałem celu, aby wszystkie moje odpowiedzi były akceptowane i miały największy ból. Spędzam kilka dni (w ten weekend) z niektórymi z tych witryn. Pierwsze wrażenie było takie, że mogę podzielić się z ludźmi moją wiedzą, dlatego zacząłem udzielać odpowiedzi. W SO dostałem 760 punktów w ciągu tych trzech dni. Tak, niektóre moje odpowiedzi nie były wysokiej jakości z różnych punktów. Ale wszystkie były poprawne. Ale teraz widzę, że większość ludzi, którzy stawiają tutaj pytania - to uczniowie, którzy nie chcą spędzić sekundy na samodzielne znalezienie rozwiązania. Po co będę spędzać czas?
Serge
1
@Serge Nie wiesz, o czym są twoje komentarze. Z tego, co widziałem po tym, jak o tym wspomniałeś, miałeś imponujący początek w tworzeniu stron. Jeśli jest coś, w czym mogę pomóc w korzystaniu z tych stron lub coś, o czym chciałbyś porozmawiać, nie wahaj się spytać mnie na czacie. Jestem jednak w UTC + 2, więc odpowiedź może nie pojawić się wkrótce. Odnośnie pytań „początkujących”: Pamiętaj, że niektóre informacje są nie łatwo wykrywalne. Czytanie całości bash strona podręcznika zajmuje trochę czasu, jeśli nie wiesz, czego szukać.
Daniel Beck