Unterschied zwischen rmdir und rm -r

9

Normalerweise lösche ich Verzeichnisse mit rm :

rm -r myDir

Mir ist jedoch ein anderer Befehl bekannt, rmdir , der den Job genauso gut zu erledigen scheint:

rmdir myDir

Was ist der Unterschied zwischen diesen beiden Befehlen und wann sollte jeder verwendet werden?

Joe
quelle
2
Funktioniert Ihr rmdir, wenn sich Dateien im Unterverzeichnis befinden?
Jeff Schaller
1
Siehe auch den gleichnamigen Systemaufruf, mit rmdir(2)dem nur leere Verzeichnisse entfernt werden können.
David Foerster
4
Übrigens gibt es ein "korrektes" Verfahren für die Verwendung von rm -r: (1) Geben Sie den Befehl ein, aber geben Sie ihn nicht ein. (2) Nehmen Sie Ihre Hände von der Tastatur. (3) Zählen Sie bis fünf. (4) Drücken Sie die EINGABETASTE. Ich habe angefangen, so etwas mit allen gefährlichen Befehlen zu tun, um mir die Möglichkeit zu geben, zu sehen, was ich tue, sicherzustellen, dass ich die Dinge richtig eingegeben habe, darüber nachzudenken, ob es unerwartete Konsequenzen geben könnte usw. Gelegentlich führt mich dies Zum Beispiel, um meinen Befehl zu löschen und zuerst einige zusätzliche Überprüfungen durchzuführen.
Ajb
3
@ajb rm -rf ~ /*- bereinige mein Home-Verzeichnis. Oder warten Sie, vielleicht reinigen Sie das System. Immer gut zu überprüfen;).
Tom Carpenter
1
@ajb Beachten Sie, dass rmdirund rm -rsind zwei Zeichenfolgen der gleichen Länge :-)
Kusalananda

Antworten:

14

rm -rentfernt ein Verzeichnis und seinen gesamten Inhalt; rmdirentfernt ein Verzeichnis nur, wenn das Verzeichnis leer ist. Ich möchte Folgendes verwenden, um ein Verzeichnis und seinen gesamten Inhalt zu entfernen:

rm -rf <directory_to_be_removed>
Scott Kayser
quelle
17
Beachten Sie, dass Sie normalerweise nicht verwenden sollten, -fwenn Sie nicht müssen. Es ist praktisch, -rfjedes Mal zu verwenden, aber es deaktiviert (fast) alle Sicherheitsüberprüfungen.
Allo
5
-1 für eine unnötige Empfehlung der -fFlagge von rm, die unvorhersehbare, nicht rückgängig zu machende Konsequenzen haben kann
Kat.
Also rmdirist nur rm -d?
Stan Strum
@StanStrum -dist keine Standardoption für rm.
Kusalananda
@cat Der rmBefehl kann im Allgemeinen diese Konsequenzen haben. Das -fFlag ist nützlich, wenn es set -ein einem Skript ausgeführt wird. Ich würde zustimmen, dass das Verwenden ohne nachzudenken unnötig ist .
Kusalananda
1

Sie sollten verwenden, rm -rwenn Sie ein Verzeichnis und seinen gesamten Inhalt rekursiv entfernen möchten oder wenn das Ziel ein Verzeichnis oder eine Datei sein kann und Sie es löschen möchten, unabhängig davon, um was es sich handelt.

Sie sollten verwenden, rmdirwenn Sie ein leeres Verzeichnis entfernen möchten.

Der rmdirBefehl ist nützlich, da er sich weigert, nicht leere Verzeichnisse und Dateien zu entfernen. Dies dient als Sicherheitshinweis in Situationen, in denen Sie absolut sicher sein möchten, dass das, was Sie löschen, ein Verzeichnis ist und dass das Verzeichnis leer ist, bevor Sie es löschen (z. B. in einem Skript), und es als Fehlerbedingung behandeln möchten Andernfalls.

Kusalananda
quelle