@DanDascalescu Ponieważ odpowiedź na to pytanie jest trywialna, należy przeczytać stronę podręcznika użytkownika, która powinna być pierwszym punktem kontaktowym każdego użytkownika, aby odpowiedzieć na takie pytanie.
David Richerby,
9
Wypróbuj i przekonaj się. (Spoiler: nie.)
imallett,
3
Przez Golly! To pytanie musi być żartem DevRobota! Jak mogłeś dostać się na swój poziom karmy bez konieczności przeglądania stron podręcznika. Teraz ... jesteś człowiekiem?
Cbhihe,
2
Rzeczywiście brzmi jak żart. Jakby ktoś próbował zapytać: „czy z H2O powstaje deszcz?” (Dobra odpowiedź brzmiałaby: normalnie tak, ale w przyszłości, gdy człowiek zostanie zniszczony, połowa flory Ziemi, 50% z nich zmieni się w kwas (jak w kwaśnym deszczu))
syntaxerror
Odpowiedzi:
52
Polecenie rm -rfjest takie samo jak rm -r -f.
Ze rmstrony podręcznika (wpisz man rmterminal, aby go zobaczyć) -r:
remove directories and their contents recursively
I -frobi:
ignore nonexistent files and arguments, never prompt
Więc w połączeniu robią oba.
W rzeczywistości jest to bardzo niebezpieczne polecenie, ponieważ rekurencyjnie usunie wszystko w wybranym katalogu (lub po prostu usunie wybrany plik) i zrobi to bez monitowania użytkownika.
@Paul, co zrobiłby slash? Używam tego polecenia, aby często usuwać katalogi i bez slash.
Octopus,
1
@Octopus, ukośnik sam wskazuje katalog główny. rm -rf /teoretycznie usunie każdy plik na twoim komputerze, który znajduje się w katalogu, do którego masz uprawnienia do zapisu. Jeśli jesteś rootem, oznacza to wymazanie całego systemu. (W praktyce to nie działa, ponieważ GNU rmma specjalny przypadek, który odmawia zgody, rm -r /chyba że ty też powiesz --no-preserve-root.)
cjm
10
Mimo to nie polecam próbować rm -rf /sprawdzić, czy jest prawidłowo złapany.
cjm
2
@mattburnett Jest to również niebezpieczne na maszynie wirtualnej: możesz mieć montowania, które nie są lokalne dla maszyny wirtualnej. W szczególności uważam, że dość powszechne jest montowanie jednego z katalogów komputera hosta na maszynie wirtualnej w celu udostępniania plików między hostem a maszyną wirtualną.
hvd
1
@mattburnett Mam maszyny wirtualne. Nie mam poddanej kwarantannie maszyny wirtualnej. Po prostu nie uruchamiam nieznanych plików wykonywalnych. :)
hvd
22
Oprócz poprzedniej poprawnej odpowiedzi chciałbym nauczyć cię, jak łowić:
Jeśli nie masz pewności, jak działa polecenie, jakie opcje ma i co robi, otwórz terminal i wpisz
man <command>
Na przykład:
man rm
Tam znajdziesz opcję. Strona podręcznika może być bardzo długa do przeczytania, więc w typie terminala:
/<pattern>
Na przykład robienie:
/-f
Możesz łatwo wylądować do:
-f, --force
ignore nonexistent files and arguments, never prompt
Dla -r wykonaj:
-r, -R, --recursive
remove directories and their contents recursively
Możesz przechodzić między wynikami wyszukiwania za pomocą n(dalej) i N(poprzednio).
Premia:
Jeśli musisz coś zrobić, ale nie znasz nazwy polecenia, użyj aproposdo wyszukiwania na stronach podręcznika :
Ściśle mówiąc, r flag is to remove directories nie jest w porządku ... usuwa katalogi wraz z zawartością, jest to operacja rekurencyjna .. według twoich słów, usuwa tylko katalogi, a co z podkatalogami, plikami pod nim? ponieważ pozycja katalogu zawiera tylko mapowanie i-węzłów, nie ma to żadnego sensu ..
heemayl
Masz rację, zmienię moją odpowiedź.
Chris
1
-r rekurencyjnie usuwa katalogi i ich zawartość .
Jim Balter,
3
Jak już wspomniano, rm -rf <ARG>ma na celu wymuszone usuwanie plików rekurencyjnie, gdzie <ARG>jest katalog (choć może to być plik w porządku).
Chodzi o -rto, że (usuwanie rekurencyjne) rmnie można usunąć katalogów, jeśli nie są one puste, po prostu dlatego, że bazowe wywołanie systemowe, które rmużywa ( unlink ) działa tylko na pustych katalogach. Tak więc, to, co -rrobi flaga, to najpierw wyszukiwanie dogłębne w dół do katalogów i usuwanie plików, a dopiero potem, gdy katalog jest pusty - usunie go. Ten sam efekt osiąga się za pomocą findpolecenia z -deleteflagą (gdy nie określisz filtrowania według -type, ale to inna historia).
Jeśli chodzi o -fto, robi dwie rzeczy - jedna zapobiega pytaniu, czy chcesz usunąć plik, czy nie (np. Gdy usuwasz plik należący do innego użytkownika z katalogu, nie wyświetla rm: remove write-protected regular empty file 'f1'?monitu o potwierdzenie) i ignoruje nieistniejące pliki. Na przykład w przypadku nieistniejącej nazwy pliku powinien pojawić się rm: cannot remove 'nonexistent': No such file or directorybłąd.
Odpowiedzi:
Polecenie
rm -rf
jest takie samo jakrm -r -f
.Ze
rm
strony podręcznika (wpiszman rm
terminal, aby go zobaczyć)-r
:I
-f
robi:Więc w połączeniu robią oba.
W rzeczywistości jest to bardzo niebezpieczne polecenie, ponieważ rekurencyjnie usunie wszystko w wybranym katalogu (lub po prostu usunie wybrany plik) i zrobi to bez monitowania użytkownika.
Ostrożnie używaj tego polecenia!
źródło
rm -rf /
teoretycznie usunie każdy plik na twoim komputerze, który znajduje się w katalogu, do którego masz uprawnienia do zapisu. Jeśli jesteś rootem, oznacza to wymazanie całego systemu. (W praktyce to nie działa, ponieważ GNUrm
ma specjalny przypadek, który odmawia zgody,rm -r /
chyba że ty też powiesz--no-preserve-root
.)rm -rf /
sprawdzić, czy jest prawidłowo złapany.Oprócz poprzedniej poprawnej odpowiedzi chciałbym nauczyć cię, jak łowić:
Jeśli nie masz pewności, jak działa polecenie, jakie opcje ma i co robi, otwórz terminal i wpisz
Na przykład:
Tam znajdziesz opcję. Strona podręcznika może być bardzo długa do przeczytania, więc w typie terminala:
Na przykład robienie:
Możesz łatwo wylądować do:
Dla -r wykonaj:
Możesz przechodzić między wynikami wyszukiwania za pomocą
Premia:n
(dalej) iN
(poprzednio).Jeśli musisz coś zrobić, ale nie znasz nazwy polecenia, użyj
apropos
do wyszukiwania na stronach podręcznika :Na przykład:
źródło
rm
jest skrótem od usunięcia.r
Flaga jest do katalogów usunąć i ich zawartość rekursywnie if
życie środki, i zastępuje wszelkie monity potwierdzenia.źródło
r flag is to remove directories
nie jest w porządku ... usuwa katalogi wraz z zawartością, jest to operacja rekurencyjna .. według twoich słów, usuwa tylko katalogi, a co z podkatalogami, plikami pod nim? ponieważ pozycja katalogu zawiera tylko mapowanie i-węzłów, nie ma to żadnego sensu ..Jak już wspomniano,
rm -rf <ARG>
ma na celu wymuszone usuwanie plików rekurencyjnie, gdzie<ARG>
jest katalog (choć może to być plik w porządku).Chodzi o
-r
to, że (usuwanie rekurencyjne)rm
nie można usunąć katalogów, jeśli nie są one puste, po prostu dlatego, że bazowe wywołanie systemowe, którerm
używa ( unlink ) działa tylko na pustych katalogach. Tak więc, to, co-r
robi flaga, to najpierw wyszukiwanie dogłębne w dół do katalogów i usuwanie plików, a dopiero potem, gdy katalog jest pusty - usunie go. Ten sam efekt osiąga się za pomocąfind
polecenia z-delete
flagą (gdy nie określisz filtrowania według-type
, ale to inna historia).Jeśli chodzi o
-f
to, robi dwie rzeczy - jedna zapobiega pytaniu, czy chcesz usunąć plik, czy nie (np. Gdy usuwasz plik należący do innego użytkownika z katalogu, nie wyświetlarm: remove write-protected regular empty file 'f1'?
monitu o potwierdzenie) i ignoruje nieistniejące pliki. Na przykład w przypadku nieistniejącej nazwy pliku powinien pojawić sięrm: cannot remove 'nonexistent': No such file or directory
błąd.Zobacz też:
źródło