Description de la formation shell
Objectif Formation Shell : Le shell est le programme auquel nous soumettons nos instructions quand nous dialoguons avec un système d’exploitation, soit à travers une simple commande tapée au clavier, soit à travers des fichiers appelés shellscripts. Son fonctionnement et sa batterie de caractères spéciaux (*, [, &, #, ‘,(,|, \, « , $, ;, !, etc.) le rendrent très puissant (mais pas très lisible au début), d’autant plus qu’il est programmable (if, while, fonction, etc.).
Cette formation présente les mécanismes détaillés du fonctionnement du shell standard sous Linux (bash), puis de sa programmation. Vous serez ainsi totalement à l’aise quand vous taperez des commandes complexes.
Surtout, vous serez autonome dans la programmation de shellscripts dans des domaines d’applications du quotidien : surveillance des ressources du système, occupation des filesystems, processus consommateurs, connexions en cours, déclenchement d’alertes, génération de ses propres journaux sous forme texte ou HTML pour publication Web, envoi de mails ou de SMS, transfert de fichiers automatisés, etc.
Objectifs
Objectif opérationnel :
Écrire des commandes et programmer en Shell.
Objectifs pédagogiques :
- Comprendre les mécanismes de substituions du shell ($, `, ‘, *, \, etc.)
- Lancer un shell (PATH, filiation, exec, fork, &, |, ;, etc.)
- Maîtriser les structures de contrôles (if, while, …)
- Programmer et debugger un shellscript
- Maîtriser les expressions régulières
- Utiliser les outils sed et awk dans des shellscripts
- Faire le lien entre les concepts et outils présentés dans cette formation avec les besoins du quotidien des développeurs de shellscripts
À qui s’adresse cette formation ?
Public :
Ce cours s’adresse aux informaticiens chargés de développer des shell-scripts, mais aussi aux correspondants informatiques ayant la responsabilité de grosses applications et aux responsables système ou d’exploitation.
Prérequis :
Les participants à ce stage doivent avoir une formation de base à l’utilisation d’un système UNIX/Linux.
Contenu du cours shell
Présentation et rappels
Principes
Les différents interpréteurs : Bourne Shell, Korn Shell, Bash, C Shell.,Tcsh…
Disponibilité des interpréteurs sur les divers systèmes.
Le point sur la normalisation (impacts sur l’écriture des scripts)
Les apports GNU (gawk, gsed…)
Différences Bourne Shell/Korn Shell/Bash
Programmation par scripts
Outils de développement
Mécanisme d’exécution des scripts
Règles de recherche des commandes
Principes d’exécution d’une commande (exec, pipeline, sous-shell, background…)
Mécanismes de base
Lecture et analyse de la ligne de commande
Expansion des accolades, développement du tilde, remplacement des paramètres
Substitution des commandes et évaluation arithmétique
Procédés d’échappement (banalisation)
Les redirections (entrée et sortie standards, fichiers, tubes, document en ligne)
Fonctionnement en interactif
Invocation du shell (options).
Les différents fichiers de démarrage.
Notions d’environnement (variables, alias, fonctions).
Historique et rappel des commandes. Contrôle de jobs.
La complémentation des noms. Terminaison du shell.
Construction de shell-scripts portables (ksh/bash)
Interface avec un shell-script.
Structuration d’un shell-script.
Appel d’un shell-script
Rappels sur les différentes méthodes.
Options utilisables.
Notions de sous-shell.
Compléments sur l’environnement.
Options et arguments.
Préambule du shell-script
Qui interprète le shell-script ?
Commentaires.
Paramètres de position (initialisation, sauvegarde, décalages).
Variables locales.
Variables globales.
Déclaration et visibilité des fonctions.
Postambule et retour de shell-script
Sortie du shell-script.
Fonction de sortie.
Conventions utilisées.
Valeur de retour.
Enchaînement de shell-scripts.
Structures de contrôle du shell
Commandes simples, pipelines, et listes de pipelines
Commandes composées, sous-shells et fonctions
Mécanismes de sélection et d’itération
Menus
Commandes internes et externes
Entrées/Sorties.
Interactions avec le système.
Arguments en ligne de commande.
Opérations de tests.
Compléments sur les instructions.
Redirection locale dans les fichiers de commande
Mécanismes complémentaires
Debugging d’un shell-script
Commandes de debugging.
Signaux de trace.
Journalisation.
Robustesse d’un shell-script
Vérifier l’initialisation des variables.
Gestion avancée des arguments en ligne de commande (getopts).
Tests sur le type des variables (expr).
Gestion des signaux
Autres points
Nommage et destruction des fichiers temporaires.
Cas particulier d’exécution d’un shell-script par cron.
La commande eval
Le bêtisier du shell.
Extensions du Korn Shell et Bash
Tableaux de variables. Notations spécifiques.
Opérations arithmétiques. Les alias suivis.
Notion de coprocessus.
Les commandes internes spécifiques.
Outils supplémentaires
Outils d’assistance pour la création de scripts
Utilitaires système SUSv3
Expression rationnelles : outil grep
Recherche et traitement de fichiers : outil find
Manipulation de flux de texte avec sed
Principes et aspects des scripts.
Commandes simples de recherche, remplacement, insertion.
Aperçu des commandes avancées (traitement multiligne, mémoire secondaire…)
Automatisation de tâches avec awk
Éléments généraux de programmation avec awk.
Utilisation des variables et des fonctions
Présentation des fonctions intégrées : mathématique, traitement de chaîne, interaction avec le système…
Exemples complets de scripts Awk (statistiques système, calculs…)