Gibt es eine Möglichkeit, Aufrufe von rm abzufangen und die Dateien nicht dauerhaft zu löschen, sondern in den Papierkorb zu verschieben?
Gibt es eine Möglichkeit, Aufrufe von rm abzufangen und die Dateien nicht dauerhaft zu löschen, sondern in den Papierkorb zu verschieben?
Antworten:
Dafür gibt es auf webupd8.org ein Rezept . Um Link Rot zu verhindern, finden Sie hier die wichtigen Informationen (mit einigen Ergänzungen).
sudo apt-get install trash-cli
Dies installiert trash
, empty-trash
, list-trash
und restore-trash
Befehle, die Sie verwenden können , wie sie ist oder machen rm
einen Alias trash
(siehe unten).
Die Semantik des trash
Befehls unterscheidet sich ein wenig vom Standard rm
- es ist kein -r
Flag erforderlich , um Verzeichnisse löschen zu können. Wenn Sie dies stört, schlägt webupd8.org das folgende Skript vor, das Sie in Ihren PATH einfügen und aufrufen können trash-rm
:
#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"; do
case "$f" in
(-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
tmp="${f//[rR]/}"
if [ -n "$tmp" ]; then
#echo "\$tmp == $tmp"
cmd[$i]="$tmp"
((i++))
fi
recursive=0
;;
(--recursive) recursive=0
;;
(*)
if [ $recursive != 0 -a -d "$f" ]; then
echo "skipping directory: $f"
continue
else
cmd[$i]="$f"
((i++))
fi
;;
esac
done
trash "${cmd[@]}"
In Ubuntu 12.04 und höher sollte der letzte Befehl im Skript trash-put "${cmd[@]}"
anstelle von sein trash "${cmd[@]}"
(da sich der Befehl von trash
zu geändert hat trash-put
).
Dann machen Sie das Skript ausführbar:
chmod +x trash-rm
Sobald Sie es in einem Verzeichnis in Ihrem haben PATH
, fügen Sie Ihrem ~ / .bashrc einen Alias hinzu, der bash veranlasst, Ihr Skript anstelle des eigentlichen rm
Befehls aufzurufen :
alias rm="trash-rm"
Wie djeikyb richtig hervorhebt, funktioniert der Alias-Trick .bashrc nur für den Benutzer, dessen .bashrc geändert wurde, und nur in einer Bash-Terminalsitzung.
Und das sollte es sein.
alias="trash"
). Wissen Sie, was der Vorteil des Skripts ist?
trash
das Verhalten rm
beim Löschen von Verzeichnissen ähnlicher zu gestalten. Dies kann beispielsweise für einige Skripte wichtig sein, die voraussichtlich rm
so funktionieren, wie sie funktionieren. Ich habe die Antwort aktualisiert.
libtrash (Paket libtrash in Ubuntu) scheint dies zu tun, aber ich habe es nie benutzt.