Existe-t-il un moyen d'intercepter les appels vers rm et, au lieu de supprimer définitivement les fichiers, de les déplacer vers la corbeille à la place?
Existe-t-il un moyen d'intercepter les appels vers rm et, au lieu de supprimer définitivement les fichiers, de les déplacer vers la corbeille à la place?
Réponses:
Il y a une recette sur webupd8.org pour cela. Pour éviter la pourriture des liens, voici les informations importantes (avec quelques ajouts).
sudo apt-get install trash-cli
Cela installera trash
, empty-trash
, list-trash
et les restore-trash
commandes, que vous pouvez utiliser en l' état ou font rm
un alias de trash
(voir ci - dessous).
La sémantique de la trash
commande est un peu différente de la norme rm
- elle n'a pas besoin d' -r
indicateur pour pouvoir supprimer des répertoires. Si cela vous dérange, webupd8.org propose le script suivant, que vous pouvez mettre dans votre PATH et l'appeler 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[@]}"
Dans Ubuntu 12.04 et versions ultérieures, la dernière commande du script devrait être à la trash-put "${cmd[@]}"
place de trash "${cmd[@]}"
(car la commande est passée de trash
à trash-put
).
Rendez ensuite le script exécutable:
chmod +x trash-rm
Une fois que vous l'avez dans un répertoire de votre PATH
, ajoutez un alias à votre ~ / .bashrc, qui fera bash pour appeler votre script au lieu de la rm
commande réelle :
alias rm="trash-rm"
Comme le souligne djeikyb, l'astuce d'alias .bashrc ne fonctionnerait que pour l'utilisateur dont le .bashrc est modifié, et uniquement dans la session de terminal bash.
Et ça devrait être ça.
alias="trash"
). Savez-vous quel est l'avantage d'avoir le script?
trash
en sorte de se comporter davantage rm
en ce qui concerne la suppression de répertoires. Cela peut être important pour certains scripts qui s'attendent rm
à fonctionner comme cela, par exemple. J'ai mis à jour la réponse.
libtrash (package libtrash dans Ubuntu) semble le faire, mais je ne l'ai jamais utilisé.