Co robi rm -rf
, gdy usuwa się pliki lub katalogi?
Jak działają opcje -r
i -f
?
Co robi rm -rf
, gdy usuwa się pliki lub katalogi?
Jak działają opcje -r
i -f
?
Odpowiedzi:
Polecenie rm -rf
jest takie samo jak rm -r -f
.
Ze rm
strony podręcznika (wpisz man rm
terminal, aby go zobaczyć) -r
:
remove directories and their contents recursively
I -f
robi:
ignore nonexistent files and arguments, never prompt
Więc w połączeniu robią oba.
Ostrożnie używaj tego polecenia!
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 rm
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
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).
Jeśli musisz coś zrobić, ale nie znasz nazwy polecenia, użyj apropos
do wyszukiwania na stronach podręcznika :
apropos <pattern>
Na przykład:
apropos directory listing
rm
jest skrótem od usunięcia. r
Flaga jest do katalogów usunąć i ich zawartość rekursywnie i f
życie środki, i zastępuje wszelkie monity potwierdzenia.
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óre rm
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ś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 directory
błąd.
Zobacz też: