Avoir une corbeille avec la commande rm
Quand on est un adepte de la ligne de commande, on aime manipuler nos fichiers de travail avec les commandes usuelles (cd, ls, mv, rm). Seulement voilà, si vous êtes comme moi, vous savez qu’il arrive parfois de supprimer un fichier par erreur, ou de vouloir recuperer un fichier qu’on avait supprimer il y a quelque jour.
Alors, là, on se dit que Linux n’est pas si puissant que ça. Quel dommage ne ne pas avoir une corbeille permettant de contenir les fichiers dont on veut se debarrasser.
J’ai décidé ce matin de creer dans mon bashrc un alias de la commande rm afin que cette derniere ne supprime plus mes fichiers mais les deplaces dans un repertoire « Poubelle ».
An commençant mon alis, j’ai rencontré rapidement quelques soucis, j’ai donc du creer une fonction appellée rm dans mon fichier bashrc. Cette fonction va être appelée à chaque fois que la commande rm est tapée dans le terminal.
Cette fonction, vérifie s’il y a des options passées à l’appelle de la commande, si c’est le cas, alors elle verifie s’il y a l’option force (-f), si ce n’est pas le cas alors le ou les fichiers (ou repertoires) sont deplacés dans le repertoire POUBELLE défini dans la variable POUBELLE_DIRECTORY. Vous pouvez mettre le chemin du repertoire que vous souhaitez utiliser comme corbeille. Si le repertoire n’existe pas alors la fonction le creera automatiquement. Pas belle la vie?
J’oubliais de vous dire, si l’option -f est utilisée avec l’appelle de la commande rm, alors le ou les fichiers seront reelements surpprimés.
# Surcharges de la commande rm, si l'option -f n'est pas utilisée alors
# le(s) fichier(s) sont deplaces dans le repertoire POUBELLE_DIRECTORY
function rm {
# Repertoire contenant corbeille
POUBELLE_DIRECTORY="~/POUBELLE"
# si le repertoire corbeille n'existe pas alors le creer
if [ ! -d "$POUBELLE_DIRECTORY" ]; then
mkdir -p $POUBELLE_DIRECTORY
# Si erreur retournée par mkdir alors sortir en erreur
if [ $? -gt 0 ]
then
echo "Script .bashrc (Function rm) : Erreur de creation du repertoire $POUBELLE_DIRECTORY"
exit 1;
fi
fi
# si la commande rm a des options (argument 1 contient le caractere "-")
if [ $(expr index $1 -) -gt 0 ]
then
# si la commande rm ne contient l'option f (force)
if [ $(expr index $1 f) -eq 0 ]
then
mv "$2" $POUBELLE_DIRECTORY
if [ $? -eq 0 ]; then echo "Deplacement dans $POUBELLE_DIRECTORY"; fi
else
# Commandes rm classiques avec les arguments fournis
/usr/bin/rm $*
fi
else # Sinon la commande rm n'a pas d'option
mv "$1" $POUBELLE_DIRECTORY
if [ $? -eq 0 ]; then echo "Deplacement dans $POUBELLE_DIRECTORY"; fi
fi
}
export -f rm
Comment ça, pas de Corbeille sous linux? Je suis sur Manjaro, j’ai une corbeille et sous Debian aussi… Bizarre comme affirmation…
Bonjour, quand on supprime un fichier avec la commande rm, ce dernier n’est pas deplacé dans la corbeille mais supprimé définitivement.
Merci pour votre commentaire, ce que je veux indiqué dans l’article, c’est que lorsqu’on utilise la commande rm pour effacer un fichier rien ne permet de récupérer ce dernier. Ce que je propose c’est d’avoir une alternative permettant de retrouver un fichier effacer par erreur.