Exercices - Les scripts ======================= Exercice 1 : premiers pas et commandes systèmes ----------------------------------------------- Créez un script qui permet de : 1. Créer un répertoire ``Essai_Script`` 2. Créer un fichier vide ``toto.txt`` dans ce répertoire 3. Créer une copie de ``toto.txt`` nommée ``toto2.txt``, toujours dans ce répertoire 4. Stocker une liste des fichiers de votre répertoire d’accueil dans le fichier ``toto.txt`` 5. Afficher le texte *Script correctement exécuté !* Exécutez votre script et vérifiez que tout se passe bien. Exercice 2 : introduction aux boucles ------------------------------------- Écrire un script qui compte à rebours de 5 à 1 et qui affiche ensuite *Décollage...*. Exercice 3 : lecture sur l'entrée standard ------------------------------------------ Réalisez un script qui affiche un message de bienvenue, puis qui lit une phrase de quatre mots au clavier et qui l’affiche à l’envers. Exercice 3, pour aller plus loin -------------------------------- Proposez une solution alternative à l'exercice précédent qui n'utilise pas la commande ``read``. Exercice 4 : conditions ----------------------- Écrire un script qui demande à l'utilsateur de répondre *42* à **la** question et qui boucle tant que l'utilisateur n'a pas répondu *42*. Exercice 4, pour aller plus loin -------------------------------- L'objectif de cet exercice est d'explorer les options de ``read``. Écrire un script qui demande à l'utilisateur de se choisir un login de moins de 8 caractères, puis un mot de passe d'au moins 8 caractères. Tant que l'utilisateur ne saisit pas de données correctes, on lui demande de recommencer. Bien entendu, le mot de passe ne sera pas affiché sur la console pendant que l'utilisateur le saisit. Les logins et mots de passe saisis seront tous stockés, un par ligne, dans un fichier que vous nommerez ``top_secret``, sous la forme ``login:passwd``. Exercice 5 : création de fichiers --------------------------------- Écrire un script qui crée 5 fichiers ``fichier1.txt`` à ``fichier5.txt`` dans un répertoire (existant) passé en paramètre. Exercice 5, pour aller plus loin -------------------------------- Améliorez le script précédent pour permettre : - de créer le répertoire s'il n'existe pas - de choisir le nom du fichier (par exemple, si je choisis *exo*, les fichiers créés se nommeront ``exo1.txt``, ``exo2.txt``, etc. - de choisir le nombre de fichiers à créer Exercice 6 : renommer des fichiers ---------------------------------- Écrire un script qui affiche la liste des fichiers présents dans un répertoire passé en paramètre en ajoutant ``mon_`` au début du nom de tous les fichiers (mais pas des répertoires !). Exercice 7 : recherche dans un annuaire --------------------------------------- En utilisant le fichier ``annuaire.txt`` du TP précédent, écrire un script ``recherche_annuaire.sh`` permettant de déterminer si le nom passé en paramètre lors de l'appel du script apparaît dans l'annuaire. Si la personne est présente dans l'annuaire, le script retournera *présent* et sinon, *absent*. Exercice 7, pour aller plus loin -------------------------------- Modifiez votre script précédent pour retourner *Je ne connais pas cette personne.* si la personne n'est pas dans l'annuaire, et *Le numéro de téléphone de bob est 0606060606." si bob est dans l'annuaire. Bien entendu, vous remplacerez bob et le numéro de téléphone par les vraies données de votre annuaire. Exercice 7, pour aller plus loin avec les expressions régulières --------------------------------------------------------------- Écrire un script qui permet de rechercher tous les ``?`` qui ne sont pas précédés d'un espace et de les remplacer par `` ?``. Créez un fichier de test pour vérifier que le script ne remplace pas les caractères à mauvais escient. Vous pouvez ensuite améliorer votre script pour demander à l'utilisateur quel caractère rechercher, par quoi le replacer, etc. Vous pouvez également améliorer votre script en montrant à l'utilisateur les remplacements effectués. Exercice 8 : gestion des erreurs -------------------------------- Écrire un script qui donne le terme anglais d'un chiffre passé en paramètre. Les chiffres sont compris entre 0 et 5. Le script répondra *unknown* en cas d’erreur. Exercice 9 : gestion des droits et des erreurs ---------------------------------------------- Écrire un script qui déplace l’utilisateur dans le répertoire passé en paramètre et crée un fichier vide dans ce dernier, uniquement si ce répertoire existe et que l’utilisateur est autorisé à se déplacer dedans. Un message d’erreur devra être affiché le cas échéant. Exercice 10 : premiers pas vers l'admin système ----------------------------------------------- Écrire un script shell qui affiche le nom de tous les fichiers du répertoire ``/usr/include`` dont le nom se termine par ``.h`` et ayant plus de 100 lignes. Exercice 11 : automatisation de tâches -------------------------------------- Écrire un programme permettant de changer facilement l’extension d’une série de fichiers. Exemple : la commande ``renomme htm html ~/mydir`` renomme tous les fichiers ``.htm`` du répertoire ``mydir`` en ``.html``. Exercice 11, pour aller plus loin --------------------------------- Améliorez votre script précédent pour qu'il affiche sa documentation lorsqu'il est appelé sans aucun argument, et un message d'erreur lorsqu'il est appelé avec le mauvais nombre d'arguments. Exercice 12 : invite de commande maison --------------------------------------- Écrire un script qui affiche un menu donnant le choix entre 3 commandes : 1. Affichage de la date en français 2. Addition de deux nombres 3. Quitter En fonction du choix effectué par l'utilisateur, la commande sera exécutée. Exercice 13 : gestion de la corbeille sécurisée ----------------------------------------------- 1. Écrire un script ``trash.sh`` qui déplace dans un répertoire ``poubelle`` les fichiers dont les noms sont passés en paramètres 2. Ajoutez une option ``-c`` à la commande permettant de connaître la taille de la poubelle (indice : utiliser l’option ``–h`` de ``ls``) 3. Ajouter une option ``-e`` permettant de vider la poubelle 4. Ajouter une option ``-h`` permettant d’afficher comment utiliser la commande Exercice 14 : gestion des arguments ----------------------------------- Écrire une commande shell avec 3 arguments. Elle indiquera si les 3 chaînes sont identiques ou non par le code de retour suivant : 1. 0 si les 3 chaînes sont égales 2. 1, 2 ou 3 si la chaîne différentes des autres est à la (1/2/3)ieme position 3. 4 si les trois chaînes sont différentes 4. 5 si le nombre de paramètres est incorrect