Wie universell fragst du? Meinen Sie für jeden rm-Anruf von jedem Benutzer oder Prozess? Oder nur für Sie, während Sie Bash verwenden? Oder ..
djeikyb
Antworten:
13
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-trashund restore-trashBefehle, die Sie verwenden können , wie sie ist oder machen rmeinen Alias trash(siehe unten).
Die Semantik des trashBefehls unterscheidet sich ein wenig vom Standard rm- es ist kein -rFlag 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 trashzu 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 rmBefehls 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.
Dies ist eine gute Antwort, aber es wäre noch besser, wenn Sie sie neu organisieren, um das Hauptkonzept der Verwendung eines Alias hervorzuheben. Ich denke, es ist am wichtigsten zu verstehen, wie man rm "abfängt". Was an seiner Stelle passiert, kann auf verschiedene Arten angepasst werden.
Djeikyb
Es wäre auch gut zu erwähnen, dass dies nur den Befehl rm für die Bash-Sitzung des Benutzers betrifft.
Djeikyb
@djeikyb: Danke für die Vorschläge, ich habe die Antwort aktualisiert
Sergey
Es funktioniert gut für mich ohne das Skript (nur installiert und hinzugefügt alias="trash"). Wissen Sie, was der Vorteil des Skripts ist?
Desgua
@desgua: Der Zweck des Skripts besteht darin, trashdas Verhalten rmbeim Löschen von Verzeichnissen ähnlicher zu gestalten. Dies kann beispielsweise für einige Skripte wichtig sein, die voraussichtlich rmso funktionieren, wie sie funktionieren. Ich habe die Antwort aktualisiert.
Sergey
0
libtrash (Paket libtrash in Ubuntu) scheint dies zu tun, aber ich habe es nie benutzt.
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).
Dies installiert
trash
,empty-trash
,list-trash
undrestore-trash
Befehle, die Sie verwenden können , wie sie ist oder machenrm
einen Aliastrash
(siehe unten).Die Semantik des
trash
Befehls unterscheidet sich ein wenig vom Standardrm
- 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önnentrash-rm
:In Ubuntu 12.04 und höher sollte der letzte Befehl im Skript
trash-put "${cmd[@]}"
anstelle von seintrash "${cmd[@]}"
(da sich der Befehl vontrash
zu geändert hattrash-put
).Dann machen Sie das Skript ausführbar:
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 eigentlichenrm
Befehls aufzurufen :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.
quelle
alias="trash"
). Wissen Sie, was der Vorteil des Skripts ist?trash
das Verhaltenrm
beim Löschen von Verzeichnissen ähnlicher zu gestalten. Dies kann beispielsweise für einige Skripte wichtig sein, die voraussichtlichrm
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.
quelle