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
RM
pour déplacer des fichiers dans la corbeille, -
une fonction
TRASH
pour lister le contenu de la corbeille, -
une fonction
RESTORE
pour 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
CORBEILLE
contenant le chemin vers le répertoire (caché)~/.corbeille
. (N'oubliez pas de créer le répertoire !) -
La fonction
RM
devra déplacer le fichier dans le répertoire$CORBEILLE
, et stocker le chemin d'accès dans le fichierFICHIER.info
correspondant. Vous aurez pour ceci besoin des fonctionsbasename
etrealpath
-
La fonction
TRASH
devra faire une boucle sur les fichiersFICHIER.info
de la corbeille et afficher leur contenu. -
La fonction
RESTORE
devra retrouver le fichierFICHIER.info
correspondant au chemin donné en argument.Pour ceci, le plus simple est d'utiliser la commande
grep -xl
qui permet d'afficher les noms des fichiers qui contiennent une ligne spécifique.Une fois le nom du fichier
FICHIER.info
ré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.info
de 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
RESTORE
devra dans ce cas demander quelle version utiliser...)