Wie Sie es (ursprünglich) dargestellt haben, -exec rm {}\;wird ein Syntaxfehler ausgegeben. Die korrekte Syntax erfordert ein Leerzeichen zwischen {}und\;
Peter.O
Der Befehl benötigt a, \! -type dum nicht all diese dummen Fehler auszuspucken.
Oals
2
@oals Oder leiten Sie Fehler an weiter /dev/null. Aktivieren Sie auch die -deleteOption zum Suchen.
ott--
4
Ich kann nicht sagen, ob dies ein Witz ist ... oder ob dir jemand gesagt hat, dass du es als "Witz" machen sollst.
Shep
Auf einem professionell gewarteten und sicheren System sollte es (wahrscheinlich) nichts Nützliches tun.
Roaima
Antworten:
26
Bad Things ® ™. Es ist (fast) das Äquivalent von sudo rm -rf /- es findet als root alle Dateien oder Verzeichnisse, /die von dort aus beginnen und rekursiv von dort absteigen, und führt dann den rmBefehl für jede gefundene Datei / jedes gefundene Verzeichnis aus. Verzeichniseinträge werden nicht gelöscht, da keine -foder -rOptionen übergeben wurden rm, aber alle Dateieinträge werden entfernt.
Tipp: Führen Sie dies nur aus, wenn Sie Ihr Betriebssystem neu installieren möchten.
Genau genommen wird es irgendwann gelöscht /bin/rmund danach werden keine weiteren Dateien mehr gelöscht. Der Vorschlag von @ott zu verwenden -deletewürde diesen "Fehler" beheben :-)
Nate Eldredge
4
Dies vermeidet den eingebauten Schutz in GNU rm, der sich offensichtlich weigert, alles von der Wurzel nach unten zu entfernen.
Simon Richter
2
Beachten Sie, dass dieser Befehl nicht äquivalent zu ist sudo rm -rf /. Der Versuch zu entfernen /ist durch POSIX rm verboten (Busybox rm entfernt /).
Cuonglm
Wie Cuonglm sagte, sudo rm -rf /ist es auf POSIX (und den meisten anderen) Systemen harmlos , also nein, das ist überhaupt nicht so!
Terdon
8
Lass es nicht laufen.
Dies findet alles (alle Dateien, Verzeichnisse, Links, Sockets usw.) unter /dh alles im System und versucht dann, diese nacheinander mit zu entfernen rm.
Beachten Sie, dass, da es keine -rOption gibt rm, nur die Verzeichniseinträge nicht entfernt werden und alles andere weg ist.
@cuonglm find /listet alle Dateien auf und -execführt den Befehl für jedes Ergebnis von aus find. Es ist also der findBefehl, der die Rekursion ausführt, und rmwird nur für jede einzelne Datei aufgerufen.
John Lyon
@jozzas: Nein, finde / liste alle Dateien und Verzeichnisse unter / auf, alle Verzeichnisse bleiben unverändert, nur Dateien wurden entfernt.
Cuonglm
@ Cuonglm Ich habe bereits erwähnt, dass .. Bitte überprüfen Sie den zweiten Absatz ..
Heemayl
@heemayl: Ah, ich verstehe, entschuldige mein falsches Lesen.
Cuonglm
3
Einfach! Dieser Befehl entfernt alle Dateien auf Ihrem Server.
-exec rm {}\;
wird ein Syntaxfehler ausgegeben. Die korrekte Syntax erfordert ein Leerzeichen zwischen{}
und\;
\! -type d
um nicht all diese dummen Fehler auszuspucken./dev/null
. Aktivieren Sie auch die-delete
Option zum Suchen.Antworten:
Bad Things ® ™. Es ist (fast) das Äquivalent von
sudo rm -rf /
- es findet als root alle Dateien oder Verzeichnisse,/
die von dort aus beginnen und rekursiv von dort absteigen, und führt dann denrm
Befehl für jede gefundene Datei / jedes gefundene Verzeichnis aus. Verzeichniseinträge werden nicht gelöscht, da keine-f
oder-r
Optionen übergeben wurdenrm
, aber alle Dateieinträge werden entfernt.Tipp: Führen Sie dies nur aus, wenn Sie Ihr Betriebssystem neu installieren möchten.
quelle
/bin/rm
und danach werden keine weiteren Dateien mehr gelöscht. Der Vorschlag von @ott zu verwenden-delete
würde diesen "Fehler" beheben :-)sudo rm -rf /
. Der Versuch zu entfernen/
ist durch POSIX rm verboten (Busybox rm entfernt/
).sudo rm -rf /
ist es auf POSIX (und den meisten anderen) Systemen harmlos , also nein, das ist überhaupt nicht so!Lass es nicht laufen.
Dies findet alles (alle Dateien, Verzeichnisse, Links, Sockets usw.) unter
/
dh alles im System und versucht dann, diese nacheinander mit zu entfernenrm
.Beachten Sie, dass, da es keine
-r
Option gibtrm
, nur die Verzeichniseinträge nicht entfernt werden und alles andere weg ist.quelle
find /
listet alle Dateien auf und-exec
führt den Befehl für jedes Ergebnis von ausfind
. Es ist also derfind
Befehl, der die Rekursion ausführt, undrm
wird nur für jede einzelne Datei aufgerufen.Einfach! Dieser Befehl entfernt alle Dateien auf Ihrem Server.
Lass es nicht laufen!
quelle