Gibt es einen Unterschied zwischen rm -rf / und rm -rf *. *?

Wird rm -rf *.* Ihr Dateisystem beschädigen, während rm -rf / dies nicht tut dies?

Kommentare

Antwort

Dort „s nichts Besonderes, rm -rf *.* ist ein Befehl mit einem Platzhalter für Dateinamen. Er entfernt rekursiv alle Dateien im aktuellen Verzeichnis, deren Namen einen Punkt enthalten.

rm -rf / würde einen Fehler beim Versuch verursachen, rm im Stammverzeichnis auszuführen. Diese wird von POSIX beauftragt :

Wenn […] ein Operand reso ist In das Stammverzeichnis schreibt rm eine Diagnosemeldung in den Standardfehler und macht mit solchen Operanden nichts mehr.

Abhängig In der Shell und ihren Einstellungen stimmt *.* möglicherweise auch mit .. für das übergeordnete Verzeichnis überein, jedoch ebenso wie mit /, der Versuch, das zu entfernen, ist ebenfalls ein Fehler.

Keiner von beiden wird das Dateisystem beschädigen, rm wird nur (versuchen) zu entfernen Dateien mit den üblichen Dateisystemaufrufen. Die Auswirkungen auf das gesamte System oder die Dateien des Benutzers können natürlich erheblich sein, wenn der erste Befehl in einem Verzeichnis ausgeführt wird, das wichtige Dateien enthält.

Kommentare

  • für ausreichend neue Versionen von GNU rm (ursprünglich von Solaris IIRC gestohlene Funktion). Am besten nicht weinen, wenn Ihr eingebettetes Leichtgewicht rm ist nicht mit dem neuesten POSIX kompatibel.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.