Der man
Seite von rm
in GNU Coreutils 8.12.197-032bb beschreibt das -f
oder --force
Option als „Nicht vorhandene Dateien ignorieren, nie auffordern“. Ohne diese Option werden alle vorhandenen Dateien entfernt, niemals eine Eingabeaufforderung ausgegeben und ein Exit-Code ungleich Null zurückgegeben, wenn eine der angegebenen Dateien nicht vorhanden war. Ich möchte die Dateien vorhanden aufbewahren der angegebenen Dateien existieren nicht . Wie geht das am einfachsten?
Der Anwendungsfall ist Sicherheit :Wenn ich versuche, eine Datei zu entfernen, die nicht existiert, könnte es daran liegen, dass der Befehl eine ungültige Erwartung (oder einen einfachen Fehler) enthält. Zum Beispiel das berühmte rm -rf /usr /lib/nvidia-current/xorg/xorg
hätte auf viele Arten verhindert werden können, eine davon war eine solche Option (offensichtlich, es sei denn, der Benutzer hatte durch einen unglaublichen Zufall einen /lib/nvidia-current/xorg/xorg
Verzeichnis) und ein weiteres ist Use More Quotes™. Zitate reichen jedoch nicht immer aus. Betrachten Sie zum Beispiel ssh host '/bin/rm some paths; /bin/bash foo.sh'
– Wenn ich das Semikolon vergessen oder so ziemlich jedes andere Symbol wie Doppelpunkt oder Komma eingefügt hätte, hätte es versucht, /bin/bash
zu entfernen und ~/foo.sh
.
Akzeptierte Antwort:
Ich benutze so etwas:
mkdir DELETE && mv "some" "paths" DELETE && rm -rf DELETE
Für einen einzelnen Pfad:
mv /some/path DELETE && rm -rf DELETE
Geben Sie noch besser den rm command
ein auf einer separaten Befehlszeile:mv /some/path DELETE
Eingabe rm -rf DELETE
Eingabe . Auf diese Weise ist der einzige rm
Befehl, der es in Ihren Shell-Verlauf schafft, befindet sich in einer Datei namens DELETE
Wenn Sie also eine alte Version einer Datei entfernt haben, riskieren Sie nicht, die neue Version zu entfernen, indem Sie versehentlich Nach oben drücken die falsche Anzahl von Malen, dann Enter .
Wenn Sie ein wenig automatisieren möchten:
mv_to_DELETE () {
mkdir DELETE &&
mv -- "[email protected]" DELETE/
}
mv_to_DELETE "some" "paths"
rm -rf DELETE