GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Rm-Option zum Scheitern bei nicht vorhandenen Dateien?

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

Linux
  1. Dateien rekursiv sicher löschen:Schreddern

  2. Rsync mit Löschoption, aber Gelöschtes beibehalten?

  3. Heruntergeladene Windows-Updates löschen

  4. Linux Dateien und Verzeichnisse löschen

  5. Linux-Befehl zum Entpacken:Option zum Erzwingen des Überschreibens?

So finden und löschen Sie doppelte Dateien in Linux

So löschen Sie Dateien, die in einer anderen Datei unter Linux aufgeführt sind

So entfernen/löschen Sie Dateien in Linux mit dem Befehl rm

So löschen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile

Wie lösche ich .fuse_hidden*-Dateien?

Dateien mit logrotate löschen