ECRITURE DE SCRIPTS EN SHELL BASH
- Ressources documentaires : Programmation en shell bash
- Ressources matérielles : Poste de travail Linux Ubuntu
- Ressources logicielles : Linux
- Fichiers à télécharger (clic droit, enregistrer la cible du lien sous...) :
images.zip
Introduction
Durant cette séance, nous allons écrire trois scripts en shell bash.
Le détail de la syntaxe à utiliser pour écrire un script est donné en annexe 1 « Programmation en Shell bash ».
Pour chaque script, il faudra donner :
- L'algorithme du script.
- Le code du script.
- L'ensemble des tests permettant de valider le script.
Ecriture de scripts
Préparation
Créer un sous dossier nommé scripts dans votre dossier principal,
puis se placer dans celui-ci afin de répondre aux questions suivantes.
Script nommé liste_params.sh
- En vous aidant de l'annexe 1, créer un script nommé liste_params.sh qui réalise les actions suivantes :
- Début.
- Affiche le nombre de paramètres passés à la commande.
- Affiche la liste des paramètres passés à la commande.
- Affiche le nom de la commande.
- Affiche le premier paramètre passé à la commande.
- Affiche le deuxième paramètre passé à la commande.
- Fin.
- Tester le script nommé liste_params.sh en lui passant au moins 2 paramètres.
Script nommé test_params.sh
- En vous aidant de l'annexe 1, créer un script nommé teste_params.sh qui réalise les actions suivantes :
- Début
- Teste le nombre de paramètres passés à la commande.
- Si le nombre est différent de un, affiche un message d’erreur
- Sinon, teste la validité du paramètre
- Si le paramètre est un nom de fichier existant dans le dossier courant, affiche « Le fichier existe ».
- Si le paramètre est un nom d'un sous-dossier existant dans le dossier courant, affiche « Le dossier existe ».
- Si le fichier n’existe pas, affiche « Le fichier n’existe pas ».
- Fin
- Tester le script nommé teste_params.sh en lui passant 0 puis 1 paramètre.
Script nommé suivant_params.sh
- En vous aidant de l'annexe 1, créer un script nommé suivant_params.sh qui réalise les actions suivantes :
- Début
- Suivant le nombre de paramètres passés à la commande :
- Si Pas de paramètre : Affiche le nom du dossier courant.
- Si Un paramètre : Affiche le contenu du fichier si le paramètre est un nom de ficher.
- Si deux paramètres : Copie le fichier dont le nom est contenu dans le premier
paramètre (si le paramètre est un nom de ficher) sous le nom passé en deuxième paramètre.
- Fin
- Tester le script nommé suivant_params.sh en lui passant 0 puis 1 puis 2 paramètres.
Mini projets
Aide à la recherche de fichiers
Le débutant en informatique trouvera, peut-être, la commande find un peu difficile à utiliser...
L'objectif est de proposer un script en shell bash, nommé chercher.sh, pour rendre cette commande plus facile d'accès.
Réalisez un programme qui réalise les tâches suivantes :
- Début
- Demander le type de recherche :
Par nom de fichier, suivant la date de dernière modification ou suivant la taille en blocs.
- Demander le chemin complet du dossier dans lequel effectuer la recherche.
- Si recherche par nom de fichier :
- Demander le nom du fichier.
- Afficher les résultats.
- Si recherche suivant la date de dernière modification :
- Demander le nombre de jours.
- Afficher les résultats.
- Si recherche suivant la taille en blocs :
- Demander la taille.
- Afficher les résultats.
- Fin
Exemples de recherche :
Fichier "index.html" dans le dossier "/home" :
find /home -name "index.html" -print 2> /dev/null
Fichiers créés depuis moins de 3 jours dans le dossier "/home" :
find /home -mtime -3 -print 2> /dev/null
Fichiers dont la taille dépasse 2000 Ko (2000 blocs de 1024 octets) :
find /home -size 2000 -print 2> /dev/null
Générateur de miniatures
Le but est de réaliser un générateur de miniatures d'images en shell bash.
Le script s'appellera miniatures.sh, il faudra le placer dans un dossier contenant des images.
Ce script :
- Crée le sous-dossier nommé miniatures.
- Génère pour chaque image du dossier une miniature.
- Place la miniature dans le sous-dossier miniatures.
Pour créer les miniatures, on utilisera le logiciel en ligne de commande de manipulation d'images ImageMagick.
Il consiste en une suite d'outils capables de manipuler les images.
Par exemple, pour afficher une image :
display vague.jpg
Pour créer la miniature de la même image :
convert vague.jpg -thumbnail '100x75' vaguemini.jpg
Pour tester le script, on téléchargera le fichier images.zip que l'on décompressera.
Les images contenues dans cette archive seront placées dans un dossier de test.
Arborescence des dossiers
Le script en shell bash à écrire se nomme aborescence.sh.
Il présente, dans sa première version, l'ensemble des dossiers et des sous-dossiers du dossier courant.
Une indentation permettra de distinguer les dossiers des sous dossiers.
Exemple :
Site
Images
Librairies
Musique
Moderne
Classique
Jazz
...
Dans une deuxième version, le nombre de niveaux à visualiser sera demandé à l'utilisateur.