Jeśli nie masz pewności (pewne 100%), nie uruchamiaj polecenia.
Solar Mike
5
Nigdy nie wpisuj poleceń, których nie rozumiesz. Wszystko czego potrzebujesz to. lub a / i będziesz usuwać DUŻO rzeczy.
Nelson
18
Jeśli chcesz eksperymentować z potencjalnie niebezpiecznymi poleceniami, rozważ zainstalowanie maszyny wirtualnej.
musicman523,
6
Eksperymentuj, ile chcesz (o ile twoja kopia zapasowa danych jest bezpiecznie). To tylko oprogramowanie i zawsze możesz je zainstalować ponownie, jeśli coś pójdzie nie tak. Nie pozwól nikomu trenować, aby bała się komputera.
hobbs
3
Absolutnie uruchom polecenie, jeśli nie jesteś pewien 100%. Jest tylko tyle sposobów na naukę, a faktyczne ich prowadzenie jest jednym z nich. Zastrzegaj emptor i oczywiście miej kopie zapasowe, i używaj maszyn wirtualnych i tak dalej. Ale brak ucieczki od strachu niewiele pomoże, byś mógł się rozwijać. Powinno być oczywiste, kiedy należy zachować szczególną ostrożność (tj. rm), Ale w przypadku wielu / większości innych poleceń, np. Wszystkich poleceń manipulacji tekstem opartych na potoku, po prostu ich wypróbowanie jest najłatwiejszym / najłatwiejszym z możliwych. Oczywiście wraz ze studiowaniem strony podręcznika.
AnoE
Odpowiedzi:
49
Nie, rm -rfnie usunie żadnych plików, ponieważ nie podałeś argumentu dla polecenia.
Z tego powodu -furuchamianie go bez argumentów nie jest błędem. rm -rnarzeka na „brakujący operand”, ale -fpomija to, a także pomija błędy w plikach, które nie istnieją. (Na przykład skrypt może użyć rm -rf /foo/bar/*do opróżnienia katalogu, który może być już pusty, bez konieczności 2>/dev/nullzgniatania błędów.)
Oznacza to, że możesz go użyć do usunięcia listy plików jednocześnie, np. Za pomocą
rm -rf test1.txt test2.txt
Na szczęście wystarczyło przekazać pustą listę plików, więc nic nie usunięto. Ponadto, co mówi @SolarMike : jeśli nie wiesz, co robi polecenie, nie uruchamiaj go . macOS został zaprojektowany do „ukrywania” wszystkich niebezpiecznych (ale potencjalnie potężnych) operacji uniksowych przed użytkownikiem końcowym.
FYI -rflaga jest niepotrzebna, chyba że kasujesz katalogi rekurencyjnie. Jeśli to tylko pliki, rmwystarczy - -fzrób to na siłę, nie pyta cię „jesteś pewien” dla każdego pliku.
Tim S.
9
Ponadto -f powoduje, że komunikat o użyciu nie jest wyświetlany, gdy używasz go nieprawidłowo. Właśnie dlatego podczas działania OP nie było żadnych danych wyjściowych rm -rf. Gdyby uruchomili „rm -r” bez określonych plików / katalogów, otrzymaliby następujący komunikat o użytkowaniu: JanNash ~ $ usage: rm [-f | -i] [-dPRrvW] file ... unlink file
Jan Nash
2
@barrycarter To nie do końca prawda - nadal będzie próbował usunąć /, po prostu pominie nieistniejący plik xyz*(który po prostu nie rozszerzy się z powodu braku dopasowania).
puszysty
3
@barrycarter To zachowanie zależy od konfiguracji globowania twojej powłoki. Przynajmniej w domyślnej wersji bash na macOS, w rzeczywistości usuwa ai bdla mnie - nawet bez sprecyzowania -f. echo rm -f a b c*Zamiast tego wykonaj te same polecenia, aby zobaczyć rzeczywiste zachowanie.
puszysty
2
@barrycarter i puszysty: To, co się stanie, zależy od tego, czy ustawiona jest zmienna powłoki nonomatch .
Thomas Padron-McCarthy
13
Dla laika / Linuksa / Uniksa:
rm sam nie robi nic, bo nie powiedziałeś mu, czego się pozbyć.
man rm może wyjaśnić większość tego, jeśli to rozumiesz.
-r oznacza rekurencyjny, jak w „uwzględnij wszystko w podfolderach”
-f oznacza siłę, tryb „nie proś mnie o potwierdzenie”
rm -rf(NIE Rób tego)/ powiedziałby, że usuń wszystko w /(folderze głównym) bez sprawdzania (w najnowszych wersjach macOS SIP uniemożliwi ci usunięcie samego macOS przez to, ale wiele innych rzeczy zostanie usuniętych)
rm [some file name] po prostu usunę ten plik.
rm -rf /home/myuser/booksby usunąć wszystko w myuser„s booksfolderu, a także folder.
@Gallifreyan: find / -deletepowinien „praca” (czyli faktycznie Usuwanie rzeczy, więc nie go uruchomić.)
Peter Cordes
4
Nie, ale jeśli chcesz usunąć Oto przykład:
Po uruchomieniu terminalu (w folderze / Applications / Utilities) wpisz cd ~ / Desktop, aby przejść do katalogu Desktop. Jeśli masz tutaj plik o nazwie MyFile.rtf, którego nigdy więcej nie chciałeś zobaczyć, możesz uruchomić to polecenie:
rm MyFile.rtf
Gdy naciśniesz Return, plik przejdzie w tryb pufa! Odejdzie, toast, historia. Nie możesz tego odzyskać.
Właściwie rm usuwa wszystkie odwołania do pliku, nie szoruje dysku twardego pliku, zastępując każdy bajt, jeśli dobrze rozumiem dokumentację.
NoBugs,
@NoBugs Ale uczciwie to działa wszystkie współczesne „usuwanie”, w tym Windows. Jeśli funkcja usuwania nadpisuje każdy bajt, zostanie ona jako taka reklamowana (głównie dlatego, że zajmuje więcej czasu i jest niepotrzebna przez większość czasu).
rm
), Ale w przypadku wielu / większości innych poleceń, np. Wszystkich poleceń manipulacji tekstem opartych na potoku, po prostu ich wypróbowanie jest najłatwiejszym / najłatwiejszym z możliwych. Oczywiście wraz ze studiowaniem strony podręcznika.Odpowiedzi:
Nie,
rm -rf
nie usunie żadnych plików, ponieważ nie podałeś argumentu dla polecenia.źródło
-f
uruchamianie go bez argumentów nie jest błędem.rm -r
narzeka na „brakujący operand”, ale-f
pomija to, a także pomija błędy w plikach, które nie istnieją. (Na przykład skrypt może użyćrm -rf /foo/bar/*
do opróżnienia katalogu, który może być już pusty, bez konieczności2>/dev/null
zgniatania błędów.)Ze strony podręcznika :
Oznacza to, że możesz go użyć do usunięcia listy plików jednocześnie, np. Za pomocą
Na szczęście wystarczyło przekazać pustą listę plików, więc nic nie usunięto. Ponadto, co mówi @SolarMike : jeśli nie wiesz, co robi polecenie, nie uruchamiaj go . macOS został zaprojektowany do „ukrywania” wszystkich niebezpiecznych (ale potencjalnie potężnych) operacji uniksowych przed użytkownikiem końcowym.
źródło
-r
flaga jest niepotrzebna, chyba że kasujesz katalogi rekurencyjnie. Jeśli to tylko pliki,rm
wystarczy --f
zrób to na siłę, nie pyta cię „jesteś pewien” dla każdego pliku.rm -rf
. Gdyby uruchomili „rm -r” bez określonych plików / katalogów, otrzymaliby następujący komunikat o użytkowaniu:JanNash ~ $ usage: rm [-f | -i] [-dPRrvW] file ... unlink file
/
, po prostu pominie nieistniejący plikxyz*
(który po prostu nie rozszerzy się z powodu braku dopasowania).a
ib
dla mnie - nawet bez sprecyzowania-f
.echo rm -f a b c*
Zamiast tego wykonaj te same polecenia, aby zobaczyć rzeczywiste zachowanie.Dla laika / Linuksa / Uniksa:
rm
sam nie robi nic, bo nie powiedziałeś mu, czego się pozbyć.man rm
może wyjaśnić większość tego, jeśli to rozumiesz.-r
oznacza rekurencyjny, jak w „uwzględnij wszystko w podfolderach”-f
oznacza siłę, tryb „nie proś mnie o potwierdzenie”rm -rf
(NIE Rób tego)/
powiedziałby, że usuń wszystko w/
(folderze głównym) bez sprawdzania (w najnowszych wersjach macOS SIP uniemożliwi ci usunięcie samego macOS przez to, ale wiele innych rzeczy zostanie usuniętych)rm [some file name]
po prostu usunę ten plik.rm -rf /home/myuser/books
by usunąć wszystko wmyuser
„sbooks
folderu, a także folder.źródło
rm -rf / --no-preserve-root
aby poprawnie strzelić w nogę.find / -delete
powinien „praca” (czyli faktycznie Usuwanie rzeczy, więc nie go uruchomić.)Nie, ale jeśli chcesz usunąć Oto przykład:
Po uruchomieniu terminalu (w folderze / Applications / Utilities) wpisz cd ~ / Desktop, aby przejść do katalogu Desktop. Jeśli masz tutaj plik o nazwie MyFile.rtf, którego nigdy więcej nie chciałeś zobaczyć, możesz uruchomić to polecenie:
Gdy naciśniesz Return, plik przejdzie w tryb pufa! Odejdzie, toast, historia. Nie możesz tego odzyskać.
źródło