Publié le 29 septembre 2016 - par

Apprendre à écrire des scripts Bash

shebang_250pxAu bout d’un moment, à force de refaire 10 fois, 100 fois les même choses, l’informaticien « normal » (c’est quoi être normal ? ) se pose la question de l’automatisation des tâches à exécuter.
Certes il a entendu parler de scripts & même de Bash mais finalement comment ça marche ? Comment écrire un script qui ferait le boulot à ma place ?
Écrire un script est déjà un boulot ! Mais comme tout bon informaticien est un « bon » fainéant (dans le sens ou il préfère que ce soit la machine qui bosse à sa place 🙂 ), arrive le jour où il se décide à se lancer & à écrire son premier script.

paresseux_600px

Les scripts avec le shell Bash

Pourquoi ?

bin-bashL’origine des scripts se trouve dans la paresse des informaticiens, certaines commandes bash étant difficiles à concevoir & longues à écrire, il était souhaitable de les enregistrer pour les ré-exécuter, à l’identique ou avec des valeurs différentes.

L’auteur forme des Techniciens Supérieurs en Réseaux Informatiques & de Télécommunication (TSRIT). La réduction du temps consacré à Linux dans cette formation, celle du temps consacré à la pratique des scripts, de plus en plus demandée en entreprise & la demande de stagiaires d’un support clair & précis l’a amené à rédiger ce livret.

anita-hart_cc-by-sa

Ce cours/TP est une réécriture, une adaptation & une extension de deux articles de Tristan COLOMBO parus dans Linux Pratique Hors-Série n°20, Premier pas en script shell & Scripts shell notions avancées. En effet, l’auteur était d’une part soumis à la contrainte de l’article de revue & d’autre part, à une problématique du public différente.

bash

Si remarquables que soient ces deux textes, ils devaient être  adaptés à la formation. C’est-à-dire d’une part, à des personnes n’ayant jamais programmé & d’autre part, cherchant à optimiser l’exploitation de serveurs & de postes de travail & non à écrire des logiciels. Cependant l’essentiel en a été conservé.

Pour qui ?

Ce livret est destiné à servir de support complémentaire à des apprentis administrateurs réseaux Linux, devant se colleter avec des scripts d’administration système.

tux_600px
Toutes les personnes ayant pratiqué Linux pendant plus de 100 heures devraient pouvoir faire les exercices proposés, en y consacrant entre 16 & 40 heures de travail (bin oui ça on ne peut pas le faire à votre place, il n’y a pas de formule magique : IL FAUT BOSSER UN PEU 😀 ).

C’est qui, l’auteur ?

photo_michelMichel SCIFO est né à Arles, il y a un peu plus d’un demi-siècle ; depuis 1999, il vit en région grenobloise.
Petit-fils d’un colporteur italien naturalisé, d’un cantonnier provençal & de leurs épouses respectives, humoriste patenté, économiste de formation il a aussi étudié les bases du droit, de la sociologie, de la psychologie sociale & de la psychologie du travail. Il est ingénieur conseil en informatique. il forme des techniciens supérieurs en réseaux informatiques à l’Association de Formation Professionnelle des Adultes (c’est un collègue 🙂 ).
Grand lecteur, il se met à écrire en 2001. Il souhaitait rédiger ses idées pour éviter les redites ; d’autre part, ayant un esprit de contradiction exacerbé, défendant, selon les interlocuteurs, tantôt des idées de droite, tantôt des idées de gauche 🙂 , il éprouvait le besoin de faire le
point sur les siennes. De là naquirent deux livres destinés à ses proches, disponibles sur son site Internet www.scifo.fr (dans la rubrique : Livres), & une accoutumance à l’écriture.

esperluette_minIl est président de l’ARDEUR (Association pour la Réhabilitation De l’Esperluette Uniformément Répartie). Il emploie ce symbole, noté « & », pour remplacer la conjonction « et ». c’est pour cela que vous avez croisé l’esperluette à de nombreuses reprises depuis le début de l’article !

Bon, on parle du bouquin ?

Voilà, voilà, j’y arrive.

couverture

Michel a rédigé ce fascicule à destination des débutants en script bash. Il évoque pour commencer les déboires d’un(e) informaticien(ne) confronté(e) chaque matin à la préparation de l’indispensable café qui démarre sa journée.

grognon_matin

Notre informaticien(ne) fainéant comme il se doit, se dit qu’il devrait automatiser cette tâche répétitive. Il imagine alors un robot chargé de ces opérations récurrentes (rien à voir avec la poudre).

gaston_600px

Mais au delà de cette innovation vient le moment de dire au robot ce qu’il doit faire ! C’est le moment pour Michel d’introduire les notions d’analyse et de programmation, de niveau de programmation. Une fois l’algorithme écrit, (en français logique), il faudra le traduire en un des langages de programmation existants.

baille

Cela lui permet d’introduire de façon humoristique des notions comme les instructions, fonctions, opérateurs, variables et autres constantes. J’y ai retrouvé les méthodes utilisées en formation d’adultes à partir d’exemples concrets qui permettent d’assimiler des notions en lez ramenant à des choses de la vie courante.

Et après ?

Après on passe au concret, la rédaction de scripts avec Vim ou Geany (tiens Geany est installé d’origine dans les dernières versions de Raspbian JEssie).

On commencera par un « Hello world » à la sauce gauloise, en écrivant « Bonjour » sur l’écran à partir d’un script.

carotteÉvidemment, si l’on ne pouvait écrire que des scripts de ce genre, cela ne présenterait aucun intérêt, mais pour en produire de plus complexes, il faut introduire deux notions importantes : celle de données & celle de structure de contrôle.
Lorsque vous cuisinez, même si vous êtes « multi-tâches », vous essayez d’effectuer chaque instruction l’une après l’autre, en séquence. Pourtant, certaines actions entraînent une rupture de séquence : vous ne pouvez pas passer à la ligne suivante tant que vous n’avez pas terminé l’action en cours. Ainsi quand vous découpez  une carotte en rondelle, vous effectuez une itération consistant à découper une rondelle de la carotte, jusqu’à ce qu’il ne reste plus de carotte à découper.

Vous découvrez ainsi, toujours de façon concrète, les structures de contrôles qui permettent d’organiser l’exécution des instructions soit en choisissant certaines & pas d’autres soit en répétant d’autres ou en combinant ces deux éléments…

Les exercices

exercices

Ne vous laissez pas effrayer par cette illustration 😀 Vous trouverez une série d’exercices progressifs (simples et complexes). Si vous voulez vraiment apprendre à écrire des scripts, je vous conseille de les faire seul (avec l’aide de la doc quand même). Ne cherchez pas une solution toute faite, vous n’apprendrez rien.

« il faut éviter de récupérer des scripts tout faits, car le seul moyen de comprendre un langage c’est de le pratiquer, pas de recourir à des scripts fait par d’autres, comme les assistés le pensent. Vous n’apprendrez jamais l’anglais en utilisant les services d’un interprète ! » dit Michel dans sa présentation des exercices.

bash-logo-webPour réussir ces scripts, il faut d’abord définir ce que l’on veut faire, puis chercher avec les commandes apropos & man les commandes externes & internes, & leurs options, nécessaires à l’obtention du résultat. En informatique on appelle ça RTFM 😉

Et comme dans les revues télé, la réponse aux jeux se trouve dans les dernières pages.

reponse

Les scripts proposés en réponse ont été réalisés par un stagiaire dans les deux jours prévus pour la réalisation de cette séquence. Ce ne sont ni les plus rapides ni les plus courts, cependant ils sont dignes d’un utilisateur UNIX expérimenté & ils fonctionnent ! Michel a ensuite ajouté commentaires critiques ou explicatifs & corrigés alternatifs. Vous devriez donc pouvoir vérifier vos réalisations, en sachant bien qu’il n’y a jamais une solution mais des solutions plus ou moins efficaces, rapides, compréhensibles…

Conclusion

Avec ce livre de 260 pages vous disposez d’un tremplin pour explorer le monde des scripts. Prenez votre temps et faites par vous-même, c’est la seule façon d’apprendre et de progresser. Michel a publié ce livre PDF (Dépôt légal 1er trimestre 2015 – ISBN : 978-9537431-5-9 © Le Maître Réfleur 2013-2015) en NC-BY-ND-SA (Pas d’utilisation commerciale, NC – Paternité, BY – Pas de travaux dérivés, ND – Partage à l’identique, SA). Vous pouvez donc le recopier et le diffuser sans enfreindre la licence, à condition de ne pas le vendre (seul ou associé à un autre produit) et de citer son auteur .

A noter dans le même style un livre sur PHP-MySQL, à explorer si vous voulez vous aventurer sur ce terrain…

Pour télécharger les deux livres (gratuits) cliquez sur les liens ci-dessous. Le bouton de téléchargement est en bas de la page.

Télécharger : Les scripts avec le shell Bash

Télécharger : Initiation MySQL & PHP

binbash-sh-600x600

Sources

Mes sites

 

 

Share Button

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. .

10 réflexions au sujet de « Apprendre à écrire des scripts Bash »

  1. bzh44

    Bonjour,
    je suis devenu plus adepte du script perl pour sa rapidité et son efficacité quand il s’agit d’analyser du texte. Mais le script bash reste un indispensable pour écrire rapidement un petit bout de code pour éviter de faire 50 fois la même chose sans se prendre la tête.
    Ayant travaillé dans une équipe d’industrialisation (automatisation d’installation de différents produits) je suis tout à fait d’accord avec le premier dessin : la qualité première c’est d’être paresseux !

    Répondre
  2. testou

    Bonjour François,
    Bash est pas mal du tout, mais en me baladant sur le net j’ai trouvé ceci :
    https://learn.adafruit.com/raspberry-pi-hosting-node-red/what-is-node-red
    et cette vidéo :
    https://www.youtube.com/watch?v=5Y5yHONKFt4
    L’avez vous testé ?
    J’ai trouvé ce concept très sympa pour éviter de passer des heures sur gogole à chercher des commandes. C’est très intuitif et graphique, je me dis que l’IOT est dispo pour les inventeurs en herbe à partir du Collège maintenant. ( En plus j’ai vu que Node-Red introduit des fonctions comme tweeter ) .

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.