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-trashet les restore-trashcommandes, que vous pouvez utiliser en l' état ou font rmun alias de trash(voir ci - dessous).
La sémantique de la trashcommande est un peu différente de la norme rm- elle n'a pas besoin d' -rindicateur 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 rmcommande 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?
trashen sorte de se comporter davantage rmen 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é.