PROFDINFO.COM

Votre enseignant d'informatique en ligne

Labo 6 - Révision

Retour à la page du cours

Ce laboratoire se veut une révision de tous les concepts vus jusqu'à maintenant.

Vous devrez réaliser un script qui reproduit le comportement de ce fameux "bac de recyclage" de Windows (en plus simple évidemment).

Spécifications

  • Votre script doit s'appeler mydel et doit accepter un ou deux paramètres.  Si on l'appelle avec un seul paramètre, ce paramètre doit être le nom d'un fichier.  Si on l'appelle avec deux paramètres, le premier paramètre doit être "-i" et le deuxième le nom d'un fichier.
  • Si on l'appelle d'une façon incorrecte (par exemple avec aucun paramètre, trois paramètres ou plus, ou deux paramètres mais le premier n'est pas "-i"), une explication de son utilisation correcte doit être affichée à l'écran et le script doit terminer son exécution avec un code de retour 2.
  • Il doit d'abord vérifier la présence du répertoire "Recyclage" dans le répertoire maison de l'usager courant.
  • Si ce répertoire n'existe pas, il doit le créer, et afficher un message à ce sujet à l'écran en passant (sans terminer l'exécution, juste un message informatif).
  • Le fichier passé en paramètre doit ensuite être déplacé vers le répertoire de Recyclage.  Le script doit ensuite terminer son exécution avec un code de retour 0.
  • Si le fichier passé en paramètre n'existe pas, un message d'erreur doit être affiché et votre programme doit terminer avec le code de retour 1.
  • Si l'option "-i" est utilisée, le script doit demander à l'usager s'il est certain de vouloir déplacer le fichier dans le Recyclage.  Si l'usager dit non, aucune opération ne doit être effectuée et le script doit se terminer avec le code de retour 0.
  • Si l'option "-i" est utilisée et qu'un fichier du même nom existe déjà dans le bac de recyclage, une confirmation d'écrasement doit être demandée à l'usager (en plus de la confirmation de base pour effacer le fichier).  Si l'usager dit non, aucune opération ne doit être effectuée et le script doit se terminer avec le code de retour 0.
  • Les messages d'erreurs et les demandes de confirmation doivent être clairs et en français. Aucun message d'erreur ou demande de confirmation par le système ne doivent être affichés.

Fichier de configuration

En plus des spécifications énumérées plus haut, votre script devra aller lire le fichier /etc/mydel.conf. Dans ce fichier, on pourra trouver deux paramètres possibles: recyclage et confirme.

recyclage pourra indiquer le chemin vers le répertoire qui servira de bac de recyclage. Si ce paramètre est défini, mydel devra utiliser ce répertoire plutôt que $HOME/Recyclage (qui est le cas par défaut).

confirme pourra prendre les valeurs OUI ou NON pour indiquer si on veut que le script demande des confirmations pour déplacer et pour écraser. Si ce paramètre est défini, mydel fonctionnera en conséquence, peu importe si la switch "-i" a été utilisée ou non.

Le fichier /etc/mydel.conf sera simplement constitué d'un paramètre par ligne, avec la valeur correspondante juste après, séparée par un espace, comme ceci:

confirme OUI
recyclage /var/Recyclage

L'ordre des paramètres n'a pas d'importance et ils ne sont pas obligés d'être là tous les deux. On supposera, pour plus de simplicité, que le fichier /etc/mydel.conf, s'il existe, sera valide et ne contiendra pas d'erreurs ou de trucs inconnus. S'il n'existe pas, il sera automatiquement ignoré par la méthode de lecture de fichiers vue en classe (puisque le read retournera "faux" dès l'entrée dans la boucle).

Prenez également pour acquis que le répertoire de recyclage donné dans le fichier est un répertoire où l'usager a le droit d'écrire.

Méthode

Je vous conseille d'utiliser cette méthode de travail (ceci dit, si vous en voyez une autre qui vous plait plus, ne vous gênez pas pour l'utiliser): commencez par vérifier les cas d'usages erronnés possibles pour vous en débarrasser d'entrée de jeu (nombre de paramètres incorrects, deux paramètres mais la switch "-i" n'est pas le premier, fichier inexistant...). Dans ces cas-là, sortez immédiatement du script avec exit et le code de retour approprié. Une fois ce bloc passé, vous savez que tout devrait bien aller.

Si l'usage est correct, placez immédiatement une valeur dans une variable pour savoir si vous devez demander des confirmations (un genre de "flag"): par exemple, vous mettez la variable CONF égale à 1 si vous devez confirmer, 0 sinon. Plus tard dans le script, vous n'aurez qu'à tester cette valeur avant d'agir. Le code devient clair et tous les paramètres sont traités au début. Conservez également le nom du fichier à "effacer" dans une variable, puisque le paramètre qui le contient peut varier selon l'usage.

Lisez ensuite le fichier de configuration. N'oubliez pas que chaque ligne qui est lue peut contenir n'importe quel des deux paramètres. Si confirme est égal à OUI, vous savez que vous devez demander des confirmations peu importe si "-i" a été utilisé. S'il est à NON, vous savez que vous ne devez pas demander de confirmations. La façon de régler ce détail très simplement devrait vous apparaître à la lumière du paragraphe précédent.

Vérifiez ensuite l'existence du bac de recyclage. Créez-le s'il n'existe pas.

Finalement, une fois tout cela fait, vous pouvez vous attaquer aux déplacements de fichiers vers le bac, ce qui ressemble à des trucs qu'on a déjà faits.

Le script est plus complexe et plus longs que les précédents, mais si vous y allez avec méthode, de façon ordonnée et réfléchie, il n'y a rien de très compliqué là-dedans - vous devriez tous y arriver!

Retour à la page du cours