Aus dem Handbuch:
-f, --force
Ignorieren Sie nicht vorhandene Dateien, fordern Sie nie dazu auf
-r, -R, --rekursiv
Entfernen Sie den Inhalt von Verzeichnissen rekursiv
Obwohl diese Beschreibung der Optionen unterschiedlich ist, führt der Versuch, einen leeren Ordner (in diesem Beispiel ohne rmdir) zu löschen, zum gleichen Ergebnis.
-f
Gibt -r
es einen bestimmten Typ von Situationen, in denen eine Option besser als eine andere ist, oder Situationen, in denen eine dieser Optionen einfach nicht funktioniert, während die andere nicht funktioniert?
rm -r emptydir
Entfernt dieses Verzeichnis,rm -f emptydir
nicht. Hierbei handelt es sich um zwei völlig unterschiedliche Befehlszeilenoptionen, von denen jede das tut, was in der Dokumentation angegeben ist.Antworten:
Dies ist, was die Manpage in CentOS sagt:
Nach allem, was ich (dank einiger Kommentare unten) zusammengetragen habe, gilt für die
-r
und-f
-Flaggen Folgendes :-r
--interactive
Flagge). Einige Distributionen tun dies standardmäßig./path/to/directory
)-f
example/file1
oderexample/*
).yes to all
in WindowsNachfolgend einige Beispiele, die alle mit der folgenden Struktur beginnen:
Ich habe für diese Beispiele standardmäßig den ausführlichen und interaktiven Modus aktiviert. Einige Distributionen tun dies, andere nicht.
Ein Beispiel
Wie Sie sehen, werden
rm
Verzeichnisse nicht standardmäßig entfernt.rm Beispiel -f
Das Verwenden des
-f
Flags erlaubt es immer noch nicht, Verzeichnisse zu entfernen.rm Beispiel -r
Wie Sie sehen, werden Sie für jede einzelne Datei und jedes Verzeichnis um Erlaubnis gebeten. Versteckte Dateien werden ebenfalls entfernt.
rm Beispiel / * -f
Hier werden Sie nicht um Erlaubnis gebeten, Verzeichnisse werden nicht gelöscht und versteckte Dateien auch nicht.
rm Beispiel / * -r
Hier wird der Inhalt des Beispielverzeichnisses (nicht das Verzeichnis selbst) entfernt, einschließlich versteckter Dateien.
quelle
example/subdir
), wird es nicht weiter absteigen und rm wird diese Verzeichnisse weiterhin ignorieren. (Einige Muscheln haben,**
was rekursiv ist.)*
passt in der Regel nicht „Punkt“ Dateien (ich nehme an, es gemeint war , zu ignorieren.
und..
, aber es endete ignorieren alle versteckten Dateien), alsorm -r dir/*
allein unter Umständen nicht unbedingt das Verzeichnis leer; es würdedir/.git
zum Beispiel überspringen .-r
und richtig anzuzeigen.-f
Vielleicht bin ich aber etwas über Bord gegangen.rm -r mydir
entfernt dasmydir
Verzeichnis mit allen Inhalten.rm -f mydir
entfernt kein Verzeichnis (weder leer noch mit Inhalt). Es wird ein Fehler gemeldet:unter BSD / OS X:
unter GNU / Linux:
Mögliche Erklärungen für das
rm
Verhalten des Befehls unabhängig von den angegebenen Argumenten (von den wahrscheinlichsten bis zu den unwahrscheinlichsten):rm
definiert und er übergibt-r
demrm
Befehl einige definierte Parameter (wie )rm
wird und dem eigentlichen Befehl zusätzliche Parameter übergibtrm
ausführbare DateiSie können die ersten beiden Möglichkeiten überprüfen, indem Sie ausführen
/bin/rm -f mydir
.quelle