Gestion d'une poubelle
Sur un serveur Linux, en mode commande, il n’existe pas d’équivalent de la « poubelle » de l’interface graphique. Lorsque vous supprimez un fichier par la commande rm, c’est définitif…
Vous allez créez un script « poubelle » permettant d’éviter à l’utilisateur le désagrément de perdre ses fichiers en cas de mauvaise commande, par un stockage temporaire dans une poubelle.
ATTENTION :
Vous allez travailler dans votre répertoire « home », en abrégé ~ ; étant donné que vous allez manipuler la suppression de fichiers, vous risquez à tout moment de tout effacer. ..
Prenez donc vos précautions !
Rappels préalables :
La commande pour supprimer un fichier (remove) : rm chemin/nomfichier
(ou bien rm nomfichier si le ficher se trouve dans le répertoire courant)
La commande pour déplacer un fichier (move) :
mv chemin/nomfichier destination/nouveaunomfichier
( NB : chemin et destination sont facultatifs si vous travaillez dans le répertoire courant ;
l’ancien nom et le nouveau nom peuvent être identiques si on change de répertoire)
La commande pour créer une copie d’ un fichier (copy) :
cp chemin/nomfichier destination/nouveaunomfichier
(nb : chemin et destination sont facultatifs si vous travaillez dans le répertoire courant)
Le premier paramètre reçu par un script est $1 , le second $2, et ainsi de suite.
Le nombre de paramètres transmis au script est donné par $#
(par exemple poubelle monfichier –r : $1 = « monfichier » ; $2 = « -r » ; $# = 2
Le test if permet de savoir si un nom correspond à un fichier ou à un dossier
- if [ -f "$nom_objet" ]
- then…
- else…
- fi
if [ -d "$nom_objet" ]
then…
else…
fi
Pour créer un dossier (la poubelle en l’occurrence)
mkdir chemin/nomdossier
Fonctionnalité numéro 1 : Mettre à la poubelle
Le script fonctionne de la façon suivante :
1. L’utilisateur tape la commande :
poubelle nomfichier
2. Si l’utilisateur n’indique pas de nom de fichier (nombre de paramètres
0), le script affiche un message d’erreur « spécifier obligatoirement un nom de fichier »
3. Si le nomfichier ne correspond pas à un fichier (mais à un dossier ou autres) : le script affiche un message d’erreur « spécifier obligatoirement un nom de fichier »
4. Si tout est correct, le script déplace le fichier nomfichier dans le dossier ~/garbage
Attention : Le script doit créer le dossier ~/garbage s’il n’existe pas…
Travail à faire : écrire le script « poubelle »
Fonctionnalité numéro 2 : Lister le contenu de la poubelle
On pourrait évidemment faire ls ~/garbage pour afficher le contenu de la poubelle ; cependant dans la plupart des cas on va masquer l’endroit où se trouve la poubelle. Il faut donc permettre à l’utilisateur de lister le contenu de la poubelle sans savoir où elle se trouve.
Travail à faire : Modifier le script poubelle (ne pas écrire un nouveau script) pour qu’il affiche le contenu de la poubelle en réponse à la commande (avec -l comme « liste »)
Fonctionnalité numéro 3 : Restaurer un fichier depuis la poubelle
Il faut permettre à l’utilisateur de récupérer un fichier effacé par mégarde. Pour cela la commande sera (avec -r comme « restaurer »)
Le script doit :
vérifier que le nomfichier est bien dans la poubelle, sinon indiquer une erreur « fichier absent de la poubelle »
recopier le fichier vers le répertoire « home de l’utilisateur » ~
Fonctionnalité numéro 4 : Vider la poubelle
Ajoutez l’option –v qui offre les possibilités suivantes
poubelle nomfichier –v
enlève définitivement « nomfichier » de la poubelle (s’il y est ; sinon affiche « fichier absent de la poubelle » )
poubelle –v
vide toute la poubelle avec message préalable de confirmation « êtes-vous sûr ? »