TP1 – Bash
Pour faire les exercices, vous avez besoin de connaître le langage bash. Vous pouvez vous référer à l'annexe shell. Vous pouvez aussi trouver une liste d'astuces ici. Tous les exercices sont obligatoires, sauf les exercices notés « défi » ou « optionnel » qui sont optionnels. En particulier, les exercices notés « hors présentiel » sont supposés fait d'une séance sur la suivante.
Guide de survie (∼10mn)
Le but de cet exercice est de comprendre comment trouver de l'aide sur les commandes étudiées pendant le module.
Ouvrez un terminal.
Consultez la documentation de la commande hostname. À quoi sert-elle ?
Exécutez la commande hostname. Vérifiez qu'elle affiche bien le nom de votre machine (avec un nom de domaine complet en .int-evry.fr). Normalement, celui-ci est inscrit sur chaque tour ou écran en salle machine, et suit le modèle <nom_salle>-<numero_machine>. Par exemple, a001-06, si vous êtes connecté sur la 6è machine de la salle A001.
Consultez la documentation des commandes users et who.
Utilisez ces commandes pour afficher votre identifiant de connexion.
Mon premier script shell (∼15mn)
De façon à mettre en œuvre votre premier script shell, il faut démarrer un éditeur de texte. Nous vous conseillons fortement d'utiliser emacs. Si vous programmez déjà et avez l'habitude d'un autre outil comme vi, vous pouvez l'utiliser. Il vous est demandé de ne pas utiliser gedit ou nano qui sont particulièrement inadéquats dans ce cours. N'utilisez aussi surtout pas de traitement de texte de type Word ou Libreoffice, car ces derniers sauvegardent les fichiers dans des formats non reconnus par bash.
Dans l'éditeur de texte, programmez un script shell qui permet d'afficher la chaîne « Bonjour à tout le monde ! ». Vous nommerez ce script bonjour.sh.
Manipulation des arguments (∼45mn)
Le comportement d'un script dépend souvent de données extérieures. Ces données peuvent provenir de plusieurs sources : d'un passage d'arguments du script, d'une interaction avec l'utilisateur lui demandant une saisie manuelle, d'un fichiers, etc. La suite de l'exercice vise à apprendre comment manipuler les arguments.
Modifiez le script de l'exercice précédent de manière à ce qu'il complète l'affichage produit avec un argument passé sur la ligne de commande. L'affichage devra être, par exemple :
Modifiez votre script afin qu'il prenne en compte non plus un argument, mais tous les arguments donnés sur la ligne de commande. Par exemple :
ou
Voici le squelette de l'algorithme attendu :
Modifiez votre script afin qu'il affiche la chaîne « Bonjour Marcheur Blanc ! » si aucun argument n'a été donné. Voici le squelette de l'algorithme attendu :
On souhaite maintenant rendre votre script mal élevé. Votre script ne saluera donc plus qu'une personne sur deux. Par exemple :
Voici le squelette de l'algorithme attendu :
Commande echo
et les caractères spéciaux du shell (∼10mn – hors présentiel)
Le but de cet exercice est de mettre en évidence l'interprétation des caractères spéciaux du shell avec la commande echo, et de montrer comment désactiver leur interprétation.
Petit échauffement : affichage de chaînes sans caractère spécial.
-
Affichez une simple chaîne de caractères, par
exemple Bonjour.
$ echo Bonjour
-
La commande echo permet d'afficher plusieurs
chaînes successivement. Affichez « Bonjour tout le monde ».
$ echo Bonjour tout le monde
-
Vous pouvez également afficher des caractères non
alphabétiques (tant qu'ils ne font pas partie des caractères
spéciaux du shell), comme les caractères de ponctuation, les
chiffres, etc. Affichez la chaîne : « 2 fois Bonjour tout le monde ! ».
$ echo 2 fois Bonjour tout le monde !
Désactivation de l'interprétation d'un caractère spécial.
-
En utilisant le caractère de désactivation « \ »,
affichez la chaîne de caractères : « Le # est populaire ».
$ echo Le \# est populaire
-
De même, affichez la chaîne de caractères « Le # est plus populaire que le \ ».
$ echo Le \# est plus populaire que le \\
-
Toujours en utilisant le caractère de désactivation « \ »,
affichez la chaîne de caractères « Le # est plus populaire que le \ mais bien moins que l'* ».
$ echo Le \# est plus populaire que le \\ mais bien moins que l\'\*
Désactivation de l'interprétation de plusieurs caractères spéciaux.
-
En utilisant les simples puis les doubles quotes, affichez
la chaîne de caractères : « Le # est moins populaire que le * ».
Les caratères spéciaux # et * sont tous deux désactivés par les quotes, qu'elles soient simples ou doubles.$ echo 'Le # est moins populaire que le *' $ echo "Le # est moins populaire que le *"
-
En utilisant les simples puis les doubles quotes, affichez
la chaîne de caractères : « Le # est plus populaire que le \ ».
Tout comme à la question précédente, le caractère spécial « # » est désactivé. En revanche, le caractère « \ » est interprété quand il est entre double quotes. Dans notre cas, s'il n'est pas accompagné d'un second « \ », il désactive les « " » de fermeture de l'expression.$ echo 'Le # est plus populaire que le \'
$ echo "Le # est plus populaire que le \\"