Abfangen von RM-Aufrufen und Weiterleiten gelöschter Dateien in den Papierkorb

Abfangen von RM-Aufrufen und Weiterleiten gelöschter Dateien in den Papierkorb

Gibt es eine Möglichkeit, Aufrufe von rm abzufangen und die Dateien nicht dauerhaft zu löschen, sondern in den Papierkorb zu verschieben?

Antwort1

Da ist einRezept auf webupd8.orgdafür. Um Linkrot vorzubeugen, hier die wichtigen Informationen (mit einigen Ergänzungen).

sudo apt-get install trash-cli

Dadurch werden die Befehle trash, empty-trash, list-trashund installiert restore-trash, die Sie unverändert verwenden oder für die Sie rmeinen Alias ​​erstellen können trash(siehe unten).

Die Semantik des trashBefehls weicht etwas vom Standard ab rm- es ist kein -rFlag erforderlich, um Verzeichnisse löschen zu können. Falls Sie das 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 lauten trash "${cmd[@]}"(da sich der Befehl von trashin geändert hat trash-put).

Machen Sie dann das Skript ausführbar:

chmod +x trash-rm

Sobald Sie es in einem Verzeichnis in Ihrer haben , fügen Sie einen Alias ​​zu Ihrer ~/.bashrc hinzu, wodurch Bash Ihr Skript anstelle des eigentlichen Befehls PATHaufruft :rm

alias rm="trash-rm"

Wie djeikyb richtig anmerkt, würde der .bashrc-Alias-Trick nur für den Benutzer funktionieren, dessen .bashrc geändert wurde, und nur in einer Bash-Terminalsitzung.

Und das sollte es sein.

Antwort2

Abonnieren(Paket libtrash in Ubuntu) scheint dies zu tun, aber ich habe es nie verwendet.

verwandte Informationen