Guide Avancé D'écriture Des Scripts Bash
Total Page:16
File Type:pdf, Size:1020Kb
Guide avancé d'écriture des scripts Bash Une exploration en profondeur de l'art de la pro- grammation shell Mendel Cooper Guide avancé d'écriture des scripts Bash: Une exploration en profondeur de l'art de la programmation shell Mendel Cooper 5.3 Publié le 11 mai 2008 Résumé Ce tutoriel ne suppose aucune connaissance de la programmation de scripts, mais permet une progression rapide vers un niveau in- termédiaire/avancé d'instructions tout en se plongeant dans de petites astuces du royaume d'UNIX®. Il est utile comme livre, comme manuel permettant d'étudier seul, et comme référence et source de connaissance sur les techniques de programmation de scripts. Les exercices et les exemples grandement commentés invitent à une participation active du lecteur avec en tête l'idée que la seule façon pour vraiment apprendre la programmation de scripts est d'écrire des scripts. Ce livre est adapté à une utilisation en classe en tant qu'introduction générale aux concepts de la programmation. La dernière mise à jour de ce document, comme une « archive tar » compressée avec bzip2 incluant à la fois le source SGML et le HTML généré, peut être téléchargée à partir du site personnel de l'auteur. Une version PDF est aussi disponible (site miroir du PDF). Voir le journal des modifications pour un historique des révisions. Dédicace Pour Anita, la source de toute magie i Part 1. Introduction .......................................................................................................................................... 1 1. Pourquoi la programmation Shell ? ........................................................................................................... 2 2. Lancement avec un « #! » ........................................................................................................................ 4 2.1. Appeler le script ............................................................................................................................ 7 2.2. Exercices préliminaires .................................................................................................................. 8 Part 2. Bases .................................................................................................................................................. 9 3. Caractères spéciaux ............................................................................................................................... 10 4. Introduction aux variables et aux paramètres .............................................................................................. 28 4.1. Substitution de variable ................................................................................................................. 28 4.2. Affectation de variable .................................................................................................................. 30 4.3. Les variables Bash ne sont pas typées ............................................................................................... 32 4.4. Types spéciaux de variables ........................................................................................................... 33 5. Guillemets et apostrophes ....................................................................................................................... 37 5.1. Placer les variables entre guillemets ................................................................................................. 37 5.2. Échappement ............................................................................................................................... 39 6. Sortie et code de sortie (ou d'état) ............................................................................................................ 44 7. Tests ..................................................................................................................................................46 7.1. Constructions de tests .................................................................................................................... 46 7.2. Opérateurs de test de fichiers .......................................................................................................... 52 7.3. Autres opérateurs de comparaison ................................................................................................... 55 7.4. Tests if/then imbriqués .................................................................................................................. 59 7.5. Tester votre connaissance des tests .................................................................................................. 60 8. Opérations et sujets en relation ................................................................................................................ 61 8.1. Opérateurs ..................................................................................................................................61 8.2. Constantes numériques .................................................................................................................. 67 Part 3. Après l'approche basique ........................................................................................................................ 69 9. Les variables revisitées .......................................................................................................................... 70 9.1. Variables internes ......................................................................................................................... 70 9.2. Manipuler les chaînes de caractères ................................................................................................. 87 9.3. Substitution de paramètres ............................................................................................................. 94 9.4. Typer des variables : declare ou typeset ......................................................................................... 102 9.5. Références indirectes .................................................................................................................. 105 9.6. $RANDOM : générer un nombre aléatoire ...................................................................................... 107 9.7. La construction en double parenthèse ............................................................................................. 117 10. Boucles et branchements .................................................................................................................... 119 10.1. Boucles .................................................................................................................................. 119 10.2. Boucles imbriquées ................................................................................................................... 130 10.3. Contrôle de boucles ................................................................................................................... 130 10.4. Tests et branchements ................................................................................................................ 133 11. Substitution de commandes ................................................................................................................. 141 12. Expansion arithmétique ...................................................................................................................... 147 13. Récréation ....................................................................................................................................... 148 Part 4. Commandes ...................................................................................................................................... 149 14. Commandes internes et intégrées .......................................................................................................... 159 14.1. Commandes de contrôle des jobs ................................................................................................. 185 15. Filtres externes, programmes et commandes ........................................................................................... 190 15.1. Commandes de base .................................................................................................................. 190 15.2. Commandes complexes ............................................................................................................. 195 15.3. Commandes de date et d'heure .................................................................................................... 204 15.4. Commandes d'analyse de texte .................................................................................................... 208 15.5. Commandes pour les fichiers et l'archivage .................................................................................... 229 15.6. Commandes de communications .................................................................................................. 245 15.7. Commandes de contrôle du terminal ............................................................................................. 260 15.8. Commandes mathématiques ....................................................................................................... 261 15.9. Commandes diverses ................................................................................................................. 269 16. Commandes système et d'administration ................................................................................................ 282 16.1. Analyser un script système