La programmation «Shell» Par Frédéric LANG - Idriss NEUMANN Date de publication
La programmation «Shell» Par Frédéric LANG - Idriss NEUMANN Date de publication : 19 août 2013 Cet article est un cours complet sur l'apprentissage de la programmation Shell. Ce cours propose globalement une syntaxe Bourne Shell avec quelques éléments spécifiques aux shells de même famille dits « plus évolués » (Korn Shell ou Bourne Again Shell) qui seront indiqués au moment où cela sera nécessaire. Le Bourne Shell étant intégralement supporté par le Korn Shell et le Bourne Again Shell (et leurs descendants), cela permet une compatibilité ascendante : un script en Bourne Shell fonctionnera toujours en environnements Korn Shell ou Bourne Again Shell ou shells descendants. La version actuelle de ce cours est la 3.0. Vous pouvez laisser vos commentaires ici : Commentez ♪ La programmation «Shell» par Frédéric LANG - Idriss NEUMANN I - Licence.................................................................................................................................................................... 4 II - Introduction.............................................................................................................................................................4 II-A - Pourquoi programmer en shell ?.................................................................................................................. 5 II-B - Présentation.................................................................................................................................................. 5 II-C - Impératifs.......................................................................................................................................................6 II-D - Conventions du support de cours................................................................................................................ 7 III - Éléments de base du langage..............................................................................................................................7 III-A - L'affichage.................................................................................................................................................... 7 III-B - Les commentaires........................................................................................................................................7 III-C - Le débogueur...............................................................................................................................................8 III-D - Qui exécute ?...............................................................................................................................................8 IV - Les variables.........................................................................................................................................................9 IV-A - L'affectation - L'accès..................................................................................................................................9 IV-A-1 - Les variables simples..........................................................................................................................9 IV-A-2 - Les tableaux (shells évolués)........................................................................................................... 10 IV-A-3 - Remarque..........................................................................................................................................11 IV-B - La substitution............................................................................................................................................11 IV-B-1 - Tous types de Shell..........................................................................................................................11 IV-B-2 - Uniquement en Korn Shell et Bourne Again Shell (et shells descendants)...................................... 11 IV-B-3 - Uniquement en Bourne Again Shell (et shells descendants)........................................................... 12 IV-B-4 - Remarque..........................................................................................................................................12 IV-C - La saisie en interactif................................................................................................................................ 12 IV-D - La protection..............................................................................................................................................12 IV-E - La suppression.......................................................................................................................................... 13 IV-F - La visibilité................................................................................................................................................. 13 IV-G - Le typage (« Korn Shell » et « Bourne Again Shell » et shells descendants)...........................................14 IV-H - Les variables prédéfinies...........................................................................................................................15 V - La « sous-exécution »..........................................................................................................................................16 VI - Les paramètres...................................................................................................................................................17 VI-A - Récupération des paramètres................................................................................................................... 18 VI-B - Décalage des paramètres......................................................................................................................... 18 VI-C - Réaffectation volontaire des paramètres...................................................................................................19 VI-D - Le séparateur de champs internes........................................................................................................... 20 VII - Neutralisation des métacaractères.................................................................................................................... 20 VII-A - Rappel sur les métacaractères.................................................................................................................20 VII-B - Le « backslash ».......................................................................................................................................21 VII-C - L'apostrophe ou « quote simple »............................................................................................................ 21 VII-D - Le double-guillemet ou « double-quote ».................................................................................................22 VIII - Les contrôles booléens.....................................................................................................................................22 VIII-A - Introduction.............................................................................................................................................. 22 VIII-B - La commande test...................................................................................................................................23 VIII-B-1 - Test simple sur les fichiers............................................................................................................. 23 VIII-B-2 - D'autres tests simples sur les fichiers (« Korn Shell » et « Bourne Again Shell » et shells descendants)................................................................................................................................................... 24 VIII-B-3 - Test complexe sur les fichiers (« Korn Shell » et en « Bourne Again Shell » et shells descendants)................................................................................................................................................... 24 VIII-B-4 - Test sur les longueurs de chaînes de caractères...........................................................................25 VIII-B-5 - Test sur les chaînes de caractères................................................................................................ 25 VIII-B-6 - Tests sur les valeurs numériques...................................................................................................26 VIII-B-7 - Connecteurs d'expression...............................................................................................................26 VIII-C - Les commandes « true » et « false »......................................................................................................27 VIII-D - La commande « read »........................................................................................................................... 27 IX - Les structures de contrôles................................................................................................................................27 IX-A - Introduction................................................................................................................................................ 27 IX-B - L'alternative simple.................................................................................................................................... 28 IX-C - L'alternative complexe...............................................................................................................................28 IX-D - Le branchement à choix multiples............................................................................................................ 29 IX-E - La boucle sur conditions........................................................................................................................... 30 - 2 - https://frederic-lang.developpez.com/tutoriels/linux/prog-shell/ La programmation «Shell» par Frédéric LANG - Idriss NEUMANN IX-F - La boucle sur liste de valeurs................................................................................................................... 31 IX-G - Interruption d'une ou plusieurs boucles.................................................................................................... 33 IX-H - Interruption d'un programme..................................................................................................................... 34 IX-I - Le générateur de menus en boucle (Korn Shell et Bourne Again Shell et shells descendants)................. 34 X - Les fonctions........................................................................................................................................................35 X-A - Introduction................................................................................................................................................. 35 X-B - Passage de valeurs....................................................................................................................................36 X-C - Retour de fonction......................................................................................................................................36 X-D - Renvoi d'une valeur par une fonction........................................................................................................ 37 X-E - Portée des variables...................................................................................................................................38 X-F - Imbrication de fonctions..............................................................................................................................39 X-G - La trace de l'appelant................................................................................................................................ 40 XI - Les instructions avancées.................................................................................................................................. 41 XI-A - L'inclusion de script dans un script........................................................................................................... 41 XI-B - La protection contre les signaux............................................................................................................... 42 XI-C - Transformer une expression en ordre « Shell »........................................................................................43 XI-D - Arithmétique sur les variables (« Korn Shell » et « Bourne Again Shell » et shells descendants).............43 XI-E - Créer de nouveaux canaux d'entrées/sorties............................................................................................44 XI-F - Gérer les options....................................................................................................................................... 45 XII - Les compléments...............................................................................................................................................46 XII-A - Évaluer des expressions régulières avec la commande « expr »............................................................ 47 XII-A-1 - Arithmétique..................................................................................................................................... 47 XII-A-2 - Comparaison.................................................................................................................................... 47 XII-A-3 - Travail sur les chaînes de caractères..............................................................................................48 XII-B - Rechercher des chaînes avec la commande « grep ».............................................................................48 XII-C - Découper des lignes avec la commande « cut ».....................................................................................49 XII-D - Trier les informations avec la commande « sort »...................................................................................49 XII-E - Filtrer les informations avec la commande « sed »..................................................................................50 XII-F - Transformer les informations avec la commande « tr »........................................................................... 50 XII-G - Compter les octets avec la commande « wc »........................................................................................51 XII-H - Afficher une séquence de nombres avec la commande « seq »............................................................. 51 XII-I - Afficher des données formatées avec la commande « printf »..................................................................51 XII-J - Découper les noms avec les commandes « basename » et « dirname »................................................ 51 XII-K - Filtrer les arguments avec la commande « xargs »................................................................................. 52 XII-L - Mathématiques en virgule flottante avec la commande « bc ».................................................................52 XII-M - Gérer les options avec la commande « getopt ».....................................................................................53 XII-N - Gérer son affichage à l'écran avec les codes « Escape ».......................................................................54 XIII - Exemples divers............................................................................................................................................... 56 XIII-A - Afficher une phrase sans que le curseur passe à la ligne suivante........................................................56 XIII-B - Vérifier l'existence d'un fichier, quel que soit son type........................................................................... 56 XIII-C - Vérifier la numéricité d'une variable en termes de « nombre entier ».....................................................56 XIII-D - Vérifier la numéricité d'une variable en termes de nombre « réel »........................................................57 XIII-E - Nom de base du répertoire courant........................................................................................................ 57 XIII-F - Vérification de l'autorisation d'accès d'un utilisateur quelconque............................................................57 XIII-G - Membres d'un groupe............................................................................................................................. 58 XIII-H - Serveurs gérés par « inetd »...................................................................................................................59 XIII-I - Recherche d'une commande.................................................................................................................... 60 XIII-J - Arborescence d'un répertoire...................................................................................................................60 XIII-K - Factorielle d'un nombre........................................................................................................................... 61 XIII-L - PGCD de deux nombres......................................................................................................................... 63 XIII-M - Division en nombres réels...................................................................................................................... 65 XIII-N - Résolution de polynôme du second degré : Ax^2 + Bx + C = 0.............................................................69 XIII-O - Tour de Hanoï......................................................................................................................................... 72 XIV - Registre des éditions du cours........................................................................................................................ 73 XV - Liens utiles........................................................................................................................................................ 75 XVI - Remerciements.................................................................................................................................................76 - 3 - https://frederic-lang.developpez.com/tutoriels/linux/prog-shell/ La programmation «Shell» par Frédéric LANG - Idriss NEUMANN I - Licence Permission est accordée de copier, distribuer et/ou modifier le contenu de ce document selon les termes de la « Licence de Documentation Libre GNU » (GNU Free Documentation License), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation. En particulier le verbe « modifier » autorise tout lecteur éventuel à apporter au contenu du document ses propres contributions ou à corriger d'éventuelles erreurs et lui permet d'ajouter son propre copyright dans la page « Registre des éditions », mais lui interdit d'enlever les copyrights déjà présents et lui interdit de modifier les termes de cette licence. Le contenu de ce document ne peut être cédé, déposé ou distribué d'une autre manière que l'autorise la « Licence de Documentation Libre GNU » et toute tentative de ce type annule automatiquement les droits d'utiliser ce document sous cette licence. Toutefois, des tiers ayant reçu des copies de ce document ont le droit d'utiliser ces copies et continueront à bénéficier de ce droit tant qu'ils respecteront pleinement les conditions de la licence. Toutefois, les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont eux Copyright © 2013 Developpez.com. II - Introduction Le Shell est un interpréteur de commande. Il ne fait pas partie du système d'exploitation UNIX et c'est la raison pour laquelle il porte ce nom « coquille », qui indique son état détaché du « noyau » Unix. Son rôle est d'analyser la commande tapée afin de faire réagir le système pour qu'il réponde aux besoins de l'utilisateur. C'est le premier langage de commandes développé sur Unix par Steve Bourne. Une comparaison rapide pourrait l'apparenter au DOS (Disc Operating System) développé par Microsoft, mais cette comparaison n'est là que pour illustrer le rôle du Shell par rapport à Unix. De par sa qualité de « programme externe », il n'est pas unique. En effet, rien n'empêche n'importe quel programmeur de programmer une boucle qui attend une chaîne au clavier, analyse cette chaîne et appelle ensuite le système pour exécuter l'ordre demandé. C'est la raison pour laquelle il existe plusieurs shells. Nous trouvons entre autres (liste non exhaustive) : • le Bourne Shell (« /bin/sh ») ; • le Korn Shell (« /bin/ksh ») pour lequel deux versions majeures sont aujourd'hui couramment utilisées (ksh 88 et ksh 93) ; • le cShell (« /bin/csh ») pour les utilisateurs préférant un langage apparenté au « C » ; • le Job Shell (« /bin/jsh ») ; • le Shell réseau (« /bin/rsh ») ; • le Bourne Again Shell (« /bin/bash ») qui a repris le Bourne Shell, mais qui l'a agrémenté de nouvelles fonctionnalités (rappel de commandes, complétion automatique…) ; • le c Shell amélioré (« /bin/tcsh ») améliorant le cShell tout uploads/Industriel/ prog-shell-1.pdf
Documents similaires










-
51
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 21, 2022
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 0.6261MB