WikiBtsSio

20150326GestionDunePoubelle

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 »)
  • poubelle –l

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 »)
  • poubelle nomfichier –r
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 ? »