1. Gérer une corbeille
1.1. Description
Les environnements graphiques proposent une corbeille : lorsqu'un fichier est supprimé, il est en fait déplacé dans un répertoire (caché). Il est alors possible de restaurer le fichier pour le remettre à son emplacement original...
1.2. Objectif
L'objectif de se mini projet est de créer quelques fonctions shell pour utiliser une corbeille.
1.3. Précisions
Votre script devra offrir les fonctionnalités suivantes :
-
une fonction
RMpour déplacer des fichiers dans la corbeille, -
une fonction
TRASHpour lister le contenu de la corbeille, -
une fonction
RESTOREpour restaurer un fichier de la corbeille vers son emplacement original.
Voici un exemple d'utilisation :
$ pwd
/home/pierre/test
$ ls
fichier1 fichier2 fichier3
$ RM fichier2
'fichier2' a été déplacé dans la corbeille
$ rm fichier3
$ ls
fichier1
$ TRASH
La corbeille contient
- /home/pierre/test/fichier2
$ RESTORE /home/pierre/test/fichier2
'fichier2' a été restauré dans le répertoire /home/pierre/test
$ ls
fichier1 fichier2
$ TRASH
La corbeille est vide.
Il est nécéssaire de conserver le chemin d'accès d'origine des fichiers déplacés. Pour ceci, lorsqu'un fichier fichier1 est déplacé dans la corbeille, on créé un nouveau fichier fichier1.info contenant le chemin d'accès d'origine.
-
Utilisez une variable
CORBEILLEcontenant le chemin vers le répertoire (caché)~/.corbeille. (N'oubliez pas de créer le répertoire !) -
La fonction
RMdevra déplacer le fichier dans le répertoire$CORBEILLE, et stocker le chemin d'accès dans le fichierFICHIER.infocorrespondant. Vous aurez pour ceci besoin des fonctionsbasenameetrealpath -
La fonction
TRASHdevra faire une boucle sur les fichiersFICHIER.infode la corbeille et afficher leur contenu. -
La fonction
RESTOREdevra retrouver le fichierFICHIER.infocorrespondant au chemin donné en argument.Pour ceci, le plus simple est d'utiliser la commande
grep -xlqui permet d'afficher les noms des fichiers qui contiennent une ligne spécifique.Une fois le nom du fichier
FICHIER.inforécupéré dans une variableINFO_FILE, il est possible de supprimer son extension avec l'incantation${INFO_FILE%.info}: cela donnera le nom du fichier à redéplacer dans son répertoire d'origine.N'oubliez pas de supprimer le fichier
FICHIER.infode la corbeille !
1.4. Pour aller plus loin
-
cherchez une méthode pour autoriser plusieurs fichiers de même nom dans la corbeille (s'il viennent de répertoires différents),
-
autorisez la fonction
RESTOREà prendre un chemin d'accès incomplet. S'il y a plusieurs possibilité, la fonction devra demander quel fichier elle doit restaurer... -
cherchez une méthode pour autoriser plusieurs fichiers de même nom dans la corbeille, même s'ils viennent du même répertoire. (La fonction
RESTOREdevra dans ce cas demander quelle version utiliser...)

