Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr Saisissez la référence ENI de l'ouvrage RI3PRO dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le lien de téléchargement. Avant-propos Introduction Chapitre 1 A. Définition du shell................. 18 B. Caractéristiques d'un interpréteur de commandes.... 18 C. Historique du shell................. 18 D. Principaux interpréteurs de commandes........ 19 E. Shells abordés dans cet ouvrage............ 20 Mécanismes essentiels du shell Chapitre 2 A. Commandes internes et externes........... 22 1. Les commandes externes.................. 22 2. Les commandes internes.................. 23 3. Implémentation interne et implémentation externe........ 25 B. Affichage à l'écran................. 26 1. La commande echo.................... 26 a. Le caractère "\n".................... 26 b. Le caractère "\c".................... 27 sh, ksh, bash 1
c. Le caractère "\t"..................... 27 d. Liste des caractères d'échappement............ 28 2. Les commandes print et printf................ 28 C. Le caractère ~ (tilde)................ 28 D. La commande interne cd............... 30 E. Substitution de noms de fichiers........... 30 1. Expressions basiques.................... 31 a. Le caractère *..................... 31 b. Le caractère?..................... 31 c. Les caractères [ ].................... 31 2. Expressions complexes................... 32 a.?(expression)...................... 33 b. *(expression)...................... 33 c. +(expression)..................... 33 d. @(expression)..................... 34 e.!(expression)...................... 34 f. Alternatives...................... 35 3. Interprétation du shell.................... 35 F. Séparateur de commandes.............. 36 G. Redirections.................... 37 1. Entrée et sorties standard des processus............ 37 a. Entrée standard..................... 37 b. Sortie standard..................... 37 c. Sortie d'erreur standard................. 38 2. Héritage......................... 38 3. Redirection des sorties en écriture.............. 39 a. Sortie standard..................... 39 b. Sortie d'erreur standard................. 40 2 Programmation shell sous Unix/Linux
c. Sortie standard et sortie d'erreur standard.......... 41 d. Éliminer les affichages.................. 42 e. Mécanisme interne................... 43 4. Redirection de l'entrée standard............... 44 5. Redirections avancées.................... 45 a. Rediriger les descripteurs 1 et 2 vers le même fichier..... 45 b. La double redirection en lecture.............. 52 c. Fermeture d'un descripteur................ 53 H. Tubes de communication............... 53 1. Commandes ne lisant pas leur entrée standard......... 55 2. Commandes lisant leur entrée standard............ 55 a. Exemples triviaux.................... 55 b. Cas des filtres..................... 56 3. Compléments....................... 60 a. Enchaîner des tubes................... 60 b. Dupliquer les sorties................... 61 c. Envoyer la sortie standard et la sortie d'erreur standard dans le tube...................... 62 I. Regroupement de commandes............ 62 1. Les parenthèses...................... 63 2. Les accolades....................... 68 3. Conclusion........................ 73 J. Processus en arrière-plan.............. 73 sh, ksh, bash 3
Paramétrage de l'environnement de travail Chapitre 3 A. Variables d'environnement.............. 76 1. Liste des variables..................... 76 2. Affichage de la valeur d'une variable.............. 76 3. Modification de la valeur d'une variable............ 76 4. Principales variables.................... 77 a. HOME......................... 77 b. PATH......................... 77 c. PWD......................... 79 d. PS1.......................... 79 e. PS2.......................... 83 f. TMOUT........................ 84 g. TERM......................... 84 h. LOGNAME....................... 84 i. Processus et variables d'environnement........... 85 5. Exportation des variables.................. 85 a. Liste des variables exportées............... 85 b. Variables devant être exportées.............. 86 c. Exporter une variable.................. 86 B. Les options du shell................. 89 1. Activer et désactiver une option du shell............ 89 2. Visualiser la liste des options................. 89 3. Principales options..................... 90 a. ignoreeof....................... 90 b. noclobber....................... 90 c. emacs et vi...................... 91 d. Xtrace......................... 92 4 Programmation shell sous Unix/Linux
C. Les alias...................... 92 1. Définir un alias...................... 92 2. Visualiser la liste des alias.................. 92 a. Visualiser tous les alias................. 92 b. Visualiser un alias en particulier.............. 93 3. Supprimer un alias..................... 93 D. Historique de commandes.............. 93 1. Paramétrer le rappel de commandes en ksh.......... 94 a. Option vi....................... 94 b. Option emacs..................... 96 2. Paramétrer le rappel de commandes en bash.......... 99 3. La complétion de noms de fichiers.............. 99 a. La complétion du bash.................. 99 b. La complétion du ksh.................. 100 c. Tableau récapitulatif................... 102 E. Les fichiers d'environnement............. 102 1. Caractéristiques des fichiers d'environnement.......... 102 a. Shell de connexion................... 102 b. Fichiers d'environnement lus par le shell de connexion.... 103 2. Session utilisant un Bourne Shell............... 106 3. Session utilisant un Korn Shell................ 107 4. Session utilisant un Bourne Again Shell............ 109 Les bases de la programmation shell Chapitre 4 A. Les variables utilisateur............... 114 1. Nommer une variable.................... 114 sh, ksh, bash 5
2. Définir une variable..................... 114 a. Affecter une chaîne de caractères à une variable....... 114 b. Affecter une chaîne de caractères contenant au moins un espace 115 c. Variable indéfinie.................... 115 d. Retirer la définition d'une variable............. 115 e. Isoler le nom d'une variable................ 116 3. Substitution de variables.................. 117 B. Substitution de commandes............. 119 C. Caractères de protection............... 120 1. Les simples quotes..................... 120 2. Le caractère \....................... 122 3. Les guillemets....................... 123 D. Récapitulatif des caractères spéciaux.......... 124 E. Interprétation d'une ligne de commande........ 124 F. Écriture et lancement d'un script shell......... 125 1. Définition......................... 125 2. Exécution d'un script par un shell enfant............ 126 3. Exécution d'un script par le shell courant............ 132 4. Commentaires....................... 134 G. Variables réservées du shell............. 135 1. Les paramètres positionnels................. 135 2. La commande shift..................... 137 a. Syntaxe........................ 137 b. Principe........................ 137 3. Code de retour d'une commande............... 139 a. La variable $?..................... 139 b. La commande exit.................... 140 6 Programmation shell sous Unix/Linux
4. Autres variables spéciales.................. 141 a. PID du shell interpréteur................. 141 b. PID du dernier processus lancé en arrière-plan........ 142 H. La commande read................. 144 1. Syntaxe.......................... 144 2. Lectures au clavier..................... 144 3. Code de retour....................... 146 4. La variable IFS...................... 147 I. Exécution de tests................. 148 1. La commande test..................... 148 a. Syntaxe........................ 148 b. Tests sur les fichiers................... 148 c. Tests sur les chaînes de caractères............. 151 d. Tests sur les nombres.................. 153 e. Les opérateurs..................... 154 f. Exemple concret d'utilisation............... 155 2. La commande [[ ]]..................... 156 J. Les opérateurs du shell............... 160 1. Évaluation de l'opérateur &&................. 160 2. Évaluation de l'opérateur................. 161 K. L'arithmétique................... 163 1. La commande expr..................... 163 a. Syntaxe........................ 163 b. Opérateurs....................... 163 2. La commande (( ))..................... 166 a. Syntaxe........................ 166 b. Utilisation....................... 166 3. La commande let..................... 169 sh, ksh, bash 7
L. Substitution d'expressions arithmétiques........ 170 M. Mise au point d'un script............... 171 1. Option -x......................... 171 2. Autres options....................... 174 N. Les structures de contrôle.............. 174 1. if............................ 174 2. Case........................... 178 a. Syntaxe........................ 179 b. Principe........................ 179 c. Utilisation....................... 180 3. Boucle for......................... 184 4. Boucle while....................... 187 a. Syntaxe........................ 187 b. Utilisation....................... 188 c. Boucle infinie...................... 189 5. until........................... 192 a. Syntaxe........................ 192 b. Utilisation....................... 192 6. break et continue..................... 196 Aspects avancés de la programmation shell Chapitre 5 A. Comparatif des variables $* et $@.......... 200 1. Utilisation de $* et de $@................. 200 2. Utilisation de "$*"..................... 201 3. Utilisation de "$@"..................... 202 8 Programmation shell sous Unix/Linux
B. Substitution de variables............... 203 1. Longueur de la valeur contenue dans une variable........ 203 2. Manipulation de chaînes de caractères............. 204 a. Retirer le plus petit fragment à gauche........... 204 b. Retirer le plus grand fragment à gauche.......... 204 c. Retirer le plus petit fragment à droite............ 205 d. Retirer le plus grand fragment à droite........... 205 C. Tableaux..................... 206 1. Assigner un élément.................... 206 2. Référencer un élément................... 206 3. Assignement global d'un tableau............... 207 4. Référencer tous les éléments d'un tableau........... 208 5. Obtenir le nombre d'éléments d'un tableau........... 208 6. Obtenir la longueur d'un élément d'un tableau.......... 208 D. Initialisation des paramètres positionnels avec set.... 209 E. Les fonctions.................... 209 1. Définition d'une fonction................... 209 2. Code de retour d'une fonction................ 211 3. Portée des variables.................... 214 4. Définition de variables locales................ 214 5. Passage d'arguments.................... 216 6. Exploiter l'affichage d'une fonction............... 218 7. Programme complet de l'exemple............... 220 F. Commandes d'affichage............... 222 1. La commande print..................... 222 a. Utilisation simple.................... 222 b. Suppression du saut de ligne naturel de print........ 222 sh, ksh, bash 9
c. Afficher des arguments commençant par le caractère "-".... 222 d. Écrire sur un descripteur particulier............ 223 2. La commande printf.................... 223 G. Gestion des entrées/sorties d'un script......... 225 1. Redirection des entrées/sorties standard............ 225 2. Gestion de fichiers..................... 228 a. Ouverture de fichier................... 228 b. Lecture à partir d'un fichier................ 229 c. Écriture dans un fichier................. 229 d. Fermeture d'un fichier.................. 229 3. Traitement d'un fichier................... 230 a. Informations préalables.................. 230 b. Les différentes façons d'exploiter un fichier......... 231 c. Découper une ligne en champs.............. 237 H. La commande eval................. 238 I. Gestion des signaux................. 240 1. Principaux signaux..................... 240 2. Ignorer un signal...................... 241 3. Modifier le traitement associé à un signal........... 242 4. Repositionner le traitement par défaut du shell vis-à-vis d'un signal. 243 5. Utiliser trap à partir d'un script shell............. 244 J. Gestion de menus avec select............. 245 K. Analyse des options d'un script avec getopts...... 247 L. Gestion d'un processus en arrière-plan......... 253 10 Programmation shell sous Unix/Linux
M. Script d'archivage incrémental et transfert sftp automatique 255 1. Objectif.......................... 255 2. Le fichier uploadbackup.sh................. 258 3. Le fichier fonctions.inc.sh.................. 260 Les expressions régulières Chapitre 6 A. Introduction.................... 266 B. Caractères communs aux ERb et Ere.......... 266 C. Caractères spécifiques aux ERb............ 269 D. Caractères spécifiques aux ERe............ 269 E. Exploitation des expressions régulières par les commandes 271 1. La commande vi...................... 271 2. La commande grep..................... 272 3. La commande expr..................... 274 4. sed et awk........................ 277 La commande sed Chapitre 7 A. Utilisation de la commande sed............ 280 B. Exemples..................... 282 1. Utilisation de sed en ligne de commande........... 282 a. La commande d (delete)................. 283 b. La commande p (print).................. 283 sh, ksh, bash 11
c. La commande w (write)................. 284 d. Négation d'une commande (!)............... 284 e. La commande s (substitution)............... 285 2. Script sed......................... 287 Le langage de programmation awk Chapitre 8 A. Principe...................... 290 1. Syntaxe.......................... 290 2. Variables spéciales..................... 290 a. Variables prédéfinies dès le lancement de awk........ 290 b. Variables initialisées lors du traitement d'une ligne...... 291 c. Exemples simples.................... 292 3. Critères de sélection.................... 293 a. Expressions régulières.................. 294 b. Tests logiques..................... 295 c. Intervalles de lignes................... 296 4. Structure d'un script awk.................. 296 a. BEGIN........................ 296 b. Sections intermédiaires.................. 296 c. END......................... 296 d. Commentaires..................... 296 e. Variables....................... 296 f. Exemple........................ 297 B. Opérateurs..................... 298 C. La fonction printf.................. 300 D. Redirections.................... 301 12 Programmation shell sous Unix/Linux
E. Lecture de la ligne suivante : next........... 303 F. Structures de contrôle................ 304 1. if............................ 304 2. for............................ 304 3. While.......................... 305 4. do-while......................... 305 5. break.......................... 305 6. continue......................... 306 G. Terminer un script................. 306 H. Tableaux..................... 307 1. Tableaux indicés par un entier................ 307 2. Tableaux associatifs.................... 308 a. Définition....................... 308 b. Tester l'existence d'un élément.............. 309 c. Supprimer un élément.................. 310 I. Les arguments de la ligne de commande........ 310 J. Fonctions intégrées................. 312 1. Fonctions travaillant sur les chaînes.............. 312 2. Fonctions mathématiques.................. 313 3. Autres fonctions...................... 313 a. La fonction getline.................... 313 b. La fonction close.................... 317 c. La fonction system................... 318 K. Fonctions utilisateur................. 319 sh, ksh, bash 13
L. Exemples de scripts................. 321 1. Analyse d'un fichier de log.................. 321 2. Génération d'un fichier d'étiquettes.............. 323 Les commandes filtres Chapitre 9 A. Introduction.................... 328 B. Syntaxe d'appel des commandes filtres......... 328 C. Visualisation de données............... 328 1. Consultation de données, création de fichier : cat........ 328 2. Valeur des octets d'un flux de données : od........... 330 3. Filtrage de lignes : grep................... 331 4. Dernières lignes d'un flux de données : tail........... 334 5. Premières lignes d'un flux de données : head.......... 335 6. Duplication de la sortie standard : tee............. 336 7. Numérotation de lignes : nl................. 337 8. Présentation d'un flux de données : pr............. 338 D. Traitement de données................ 340 1. Comptage de lignes, de mots et de caractères : wc....... 340 2. Extraction de caractères : cut................ 342 3. Tri de données : sort.................... 343 4. paste........................... 345 5. split........................... 347 6. Transformation de caractères : tr............... 348 7. Dédoublonnage : uniq.................... 349 14 Programmation shell sous Unix/Linux
E. Compressions, archivages et conversions........ 351 1. Compressions : gzip, bzip2................. 351 2. Archives tar........................ 353 3. Archives cpio....................... 354 4. Copie physique, transformations : dd............. 356 5. Changement d'encodage : iconv............... 358 F. Commandes réseau sécurisées............ 359 1. Connexion à distance : ssh................. 359 2. Transfert de fichier : sftp.................. 360 a. Commandes de sftp s'exécutant sur la machine locale..... 361 b. Commandes s'exécutant sur la machine distante....... 362 c. Commandes de transfert................. 363 d. Connexion automatique sans mot de passe......... 364 G. Autres commandes................. 366 1. La commande xargs.................... 366 2. Comparer deux fichiers : cmp................ 368 3. Lignes communes à deux fichiers : comm........... 369 Annexes A. Caractères spéciaux du shell............. 372 B. Commandes internes au shell............. 373 C. Ordre d'interprétation d'une commande......... 375 Index....................... 376 sh, ksh, bash 15