{"id":113,"date":"2011-03-02T23:52:35","date_gmt":"2011-03-02T22:52:35","guid":{"rendered":"http:\/\/www.blaess.fr\/christophe\/blog\/?page_id=113"},"modified":"2025-05-06T13:20:17","modified_gmt":"2025-05-06T12:20:17","slug":"scripts-sous-linux","status":"publish","type":"page","link":"https:\/\/www.blaess.fr\/christophe\/livres\/scripts-sous-linux\/","title":{"rendered":"Scripts sous Linux"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-114\" title=\"Scripts sous Linux\" src=\"http:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2011\/03\/livre-script-2.gif\" alt=\"Scripts sous Linux\" width=\"163\" height=\"200\" \/><\/p>\n<p style=\"text-align: justify;\">Ce livre est une introduction \u00e0 la programmation par scripts sous Linux. Il permet d&rsquo;aborder l&rsquo;\u00e9criture de scripts shell, l&rsquo;utilisation des expressions rationnelles, et les outils Grep, Sed et Awk. On aborde \u00e9galement d&rsquo;\u00e9criture de scripts en langage Perl. Ces premiers langages sont \u00e9tudi\u00e9s jusqu&rsquo;\u00e0 atteindre un niveau de programmation assez avanc\u00e9.<br \/>\nEnsuite, les langages Tcl\/Tk, Python, et Ruby sont \u00e9tudi\u00e9s avec un niveau plus simple et plus courant.<\/p>\n<p style=\"text-align: justify;\">La seconde \u00e9dition de ce livre (datant de 2003) est \u00e9puis\u00e9e aujourd&rsquo;hui. Certains langages abord\u00e9s comme Perl, Python ou Ruby ont un peu \u00e9volu\u00e9 depuis sa r\u00e9daction. En ce qui concerne la programmation shell avanc\u00e9e, je vous conseille de vous tourner vers mon nouveau livre\u00a0<a title=\"Shells Linux et Unix par la pratique\" href=\"http:\/\/www.blaess.fr\/christophe\/livres\/shells-linux-unix-pratique\/\">Scripts shell pour Linux et Unix par la pratique<\/a>.<\/p>\n<p>La premi\u00e8re \u00e9dition, nomm\u00e9e \u00ab\u00a0Langages de scripts sous Linux\u00a0\u00bb a \u00e9t\u00e9 publi\u00e9e fin 2001.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-115\" title=\"Scripts sous Linux\" src=\"http:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2011\/03\/livre-script-1.gif\" alt=\"Scripts sous Linux\" width=\"165\" height=\"200\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>Suppl\u00e9ments<\/h2>\n<p style=\"text-align: justify;\">Cette\u00a0<a href=\"http:\/\/www.blaess.fr\/christophe\/files\/script_linux.tar.gz\">archive<\/a> au format tar+gz contient l&rsquo;ensemble des scripts fournis en exemple du livre. Les exemples de la premi\u00e8re \u00e9ditions sont dans une\u00a0<a href=\"http:\/\/www.blaess.fr\/christophe\/files\/script_linux_1.tar.gz\">archive diff\u00e9rente<\/a> car les chapitres avaient \u00e9t\u00e9 renum\u00e9rot\u00e9s entre temps.<\/p>\n<h2>Table des mati\u00e8res<\/h2>\n<ul>\n<li><strong>Avant-propos<\/strong><\/li>\n<li><strong>Introduction<\/strong>\n<ul>\n<li>Interpr\u00e9teurs de commandes\n<ul>\n<li>Principes<\/li>\n<li>Automatisation de t\u00e2ches<\/li>\n<li>Outils sp\u00e9cialis\u00e9s<\/li>\n<li>Programmation rapide<\/li>\n<\/ul>\n<\/li>\n<li>Interpr\u00e9teurs \u00e9tudi\u00e9s\n<ul>\n<li>Les shells<\/li>\n<li>principaux outils syst\u00e8me<\/li>\n<li>Perl<\/li>\n<li>Tcl<\/li>\n<li>Python<\/li>\n<li>Ruby<\/li>\n<li>R\u00e9capitulatif<\/li>\n<\/ul>\n<\/li>\n<li>Ex\u00e9cution d&rsquo;un script\n<ul>\n<li>Invocation de l&rsquo;interpr\u00e9teur<\/li>\n<li>Lancement direct par le noyau<\/li>\n<li>Interpr\u00e9tation par le shell<\/li>\n<\/ul>\n<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 1 &#8211; Introduction au shell Bash<\/strong>\n<ul>\n<li>Ex\u00e9cution des scripts<\/li>\n<li>Premier aper\u00e7u\n<ul>\n<li>Premier script, rm_secure<\/li>\n<li>Analyse d\u00e9taill\u00e9e<\/li>\n<li>Performances<\/li>\n<li>Exemple d&rsquo;ex\u00e9cution<\/li>\n<\/ul>\n<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 2 &#8211; \u00c9valuation d&rsquo;expressions avec Bash<\/strong>\n<ul>\n<li>Variables<\/li>\n<li>Pr\u00e9cisions sur l&rsquo;op\u00e9rateur $\n<ul>\n<li>D\u00e9limitation du nom de variable<\/li>\n<li>Extraction de sous-cha\u00eene et recherche de motifs<\/li>\n<li>Longueur de cha\u00eene<\/li>\n<li>Actions par d\u00e9faut<\/li>\n<li>Calcul arithm\u00e9tique<\/li>\n<li>Invocation de commande<\/li>\n<\/ul>\n<\/li>\n<li>Port\u00e9es et attributs des variables\n<ul>\n<li>Restriction de port\u00e9e<\/li>\n<li>Extension de port\u00e9e &#8211; Environnement<\/li>\n<li>Attributs des variables<\/li>\n<\/ul>\n<\/li>\n<li>Param\u00e8tres\n<ul>\n<li>Param\u00e8tres positionnels<\/li>\n<li>Param\u00e8tres sp\u00e9ciaux<\/li>\n<\/ul>\n<\/li>\n<li>Protection des expressions\n<ul>\n<li>Protection par le caract\u00e8re backslash<\/li>\n<li>Protection par apostrophes<\/li>\n<li>Protection par guillemets<\/li>\n<\/ul>\n<\/li>\n<li>Tableaux<\/li>\n<li>\u00c9valuation explicite d&rsquo;une expression<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 3 &#8211; \u00c9l\u00e9ments de programmation avec Bash<\/strong>\n<ul>\n<li>Commandes simples et compos\u00e9es, code de retour\n<ul>\n<li>Commande simple<\/li>\n<li>Pipelines<\/li>\n<li>Listes de pipelines<\/li>\n<li>Commandes compos\u00e9es<\/li>\n<\/ul>\n<\/li>\n<li>Redirections d&rsquo;entr\u00e9es-sorties\n<ul>\n<li>Entr\u00e9es-sorties standards<\/li>\n<li>Redirection des entr\u00e9es-sorties standards<\/li>\n<li>Redirections avanc\u00e9es<\/li>\n<\/ul>\n<\/li>\n<li>Structures de contr\u00f4le\n<ul>\n<li>S\u00e9lection d&rsquo;instructions<\/li>\n<li>It\u00e9rations d&rsquo;instructions<\/li>\n<li>Fonctions<\/li>\n<\/ul>\n<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 4 &#8211; Commandes, variables et utilitaires syst\u00e8me<\/strong>\n<ul>\n<li>Commandes internes\n<ul>\n<li>Comportement du shell<\/li>\n<li>Ex\u00e9cution des scripts et commandes<\/li>\n<li>Interactions avec le syst\u00e8me<\/li>\n<\/ul>\n<\/li>\n<li>Variables internes\n<ul>\n<li>$?<\/li>\n<li>$$, $!, PPID<\/li>\n<li>UID, EUID<\/li>\n<li>HOME, PWD, OLDPWD<\/li>\n<\/ul>\n<\/li>\n<li>Commandes externes<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 5 &#8211; Programmation avanc\u00e9e avec Bash<\/strong>\n<ul>\n<li>Processus fils, parall\u00e9lisme<\/li>\n<li>Fonctionnement en arri\u00e8re-plan, d\u00e9mons<\/li>\n<li>Signaux\n<ul>\n<li>Envoi d&rsquo;un signal<\/li>\n<li>R\u00e9ception d&rsquo;un signal<\/li>\n<li>Distribution des signaux<\/li>\n<li>Signaux temps-r\u00e9el<\/li>\n<li>Attente de signaux<\/li>\n<\/ul>\n<\/li>\n<li>Communication entre processus<\/li>\n<li>Entr\u00e9es-sorties\n<ul>\n<li>tee<\/li>\n<li>xargs<\/li>\n<\/ul>\n<\/li>\n<li>Interface utilisateur\n<ul>\n<li>stty<\/li>\n<li>tput<\/li>\n<li>dialog<\/li>\n<\/ul>\n<\/li>\n<li>D\u00e9boguer un script<\/li>\n<li>Virgule flottante<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 6 &#8211; Programmer sous d&rsquo;autres shells<\/strong>\n<ul>\n<li>Diff\u00e9rences entre Bash 2 et Bash 1.14\n<ul>\n<li>Tableaux<\/li>\n<li>Fonctions internes et variables<\/li>\n<\/ul>\n<\/li>\n<li>Le shell Bourne<\/li>\n<li>Korn shell et Pdksh<\/li>\n<li>Tcsh<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 7 &#8211; Expressions rationnelles &#8211; Grep<\/strong>\n<ul>\n<li>Introduction<\/li>\n<li>Expressions rationnelles simples\n<ul>\n<li>Le symbole g\u00e9n\u00e9rique `.&rsquo;<\/li>\n<li>D\u00e9but et fin de cha\u00eenes<\/li>\n<li>Alternatives<\/li>\n<li>Listes<\/li>\n<li>Intervalles<\/li>\n<li>Classes<\/li>\n<li>R\u00e9p\u00e9titions<\/li>\n<li>Groupements<\/li>\n<li>R\u00e9f\u00e9rences arri\u00e8re<\/li>\n<\/ul>\n<\/li>\n<li>Expressions rationnelles \u00e9tendues<\/li>\n<li>Outil grep<\/li>\n<li>Recherche r\u00e9cursive avec find<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 8 &#8211; \u00c9criture de scripts Sed<\/strong>\n<ul>\n<li>Pr\u00e9sentation<\/li>\n<li>Utilisations de sed<\/li>\n<li>Fonctionnement de Sed<\/li>\n<li>Commandes Sed\n<ul>\n<li>Suppression de ligne<\/li>\n<li>Commentaires<\/li>\n<li>Substitution<\/li>\n<li>Commandes compos\u00e9es<\/li>\n<\/ul>\n<\/li>\n<li>Autres commandes usuelles\n<ul>\n<li>Passage \u00e0 la ligne suivante<\/li>\n<li>Ajout de lignes<\/li>\n<li>Remplacement de blocs<\/li>\n<li>Conversion de caract\u00e8res<\/li>\n<\/ul>\n<\/li>\n<li>R\u00e9capitulatif des commandes \u00e9tudi\u00e9es<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 9 &#8211; Scripts avanc\u00e9s avec Sed<\/strong>\n<ul>\n<li>Branchements<\/li>\n<li>Entr\u00e9es-sorties vers un fichier\n<ul>\n<li>\u00c9criture dans un fichier<\/li>\n<li>Lecture d&rsquo;un fichier<\/li>\n<\/ul>\n<\/li>\n<li>Commandes multilignes\n<ul>\n<li>Chargement d&rsquo;une ligne<\/li>\n<li>Effacement d&rsquo;une ligne<\/li>\n<li>Affichage d&rsquo;une ligne<\/li>\n<\/ul>\n<\/li>\n<li>Utilisation d&rsquo;une m\u00e9moire secondaire\n<ul>\n<li>Recherche sans distinction de casse<\/li>\n<li>Recherche d&rsquo;alternative<\/li>\n<li>Utilisation de variables<\/li>\n<\/ul>\n<\/li>\n<li>Association entre sed et le shell\n<ul>\n<li>Param\u00e9trage d&rsquo;un script Sed<\/li>\n<\/ul>\n<\/li>\n<li>Applications diverses\n<ul>\n<li>Machines de Turing<\/li>\n<li>Tables index\u00e9es<\/li>\n<\/ul>\n<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 10 &#8211; Introduction \u00e0 Awk<\/strong>\n<ul>\n<li>Caract\u00e9ristiques principales\n<ul>\n<li>Les motifs<\/li>\n<li>Les actions<\/li>\n<li>Les variables<\/li>\n<li>Fichiers d&rsquo;entr\u00e9e<\/li>\n<\/ul>\n<\/li>\n<li>Enregistrements et champs\n<ul>\n<li>Les enregistrements<\/li>\n<li>Les champs<\/li>\n<\/ul>\n<\/li>\n<li>Fonctions<\/li>\n<li>D\u00e9tails sur les variables\n<ul>\n<li>Conversions<\/li>\n<li>Variables locales<\/li>\n<li>Tableaux<\/li>\n<li>Tableaux multidimensionnels<\/li>\n<li>Variables sp\u00e9ciales<\/li>\n<\/ul>\n<\/li>\n<li>Expressions<\/li>\n<li>Structures de contr\u00f4le\n<ul>\n<li>Structures de test<\/li>\n<li>Structures de boucle<\/li>\n<li>Ruptures de s\u00e9quence<\/li>\n<\/ul>\n<\/li>\n<li>Options en ligne de commande\n<ul>\n<li>Options standards<\/li>\n<li>Options Gnu<\/li>\n<\/ul>\n<p>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 11 &#8211; Fonctions internes de Awk<\/strong>\n<ul>\n<li>Retour sur les affichages<\/li>\n<li>Fonctions math\u00e9matiques\n<ul>\n<li>sqrt(x)<\/li>\n<li>atan2(x, y)<\/li>\n<li>cos (x)<\/li>\n<li>sin (x)<\/li>\n<li>exp(x)<\/li>\n<li>log(x)<\/li>\n<li>int()<\/li>\n<li>rand(), srand()<\/li>\n<\/ul>\n<\/li>\n<li>Traitement de cha\u00eenes de caract\u00e8res<\/li>\n<li>Interactions avec le syst\u00e8me<\/li>\n<li>Entr\u00e9es-sorties<\/li>\n<li>Arguments de la ligne de commande<\/li>\n<li>Fichiers sp\u00e9ciaux<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 12 &#8211; Programmation avanc\u00e9e avec Awk<\/strong>\n<ul>\n<li>Comptes-rendus et statistiques<\/li>\n<li>Script interactif<\/li>\n<li>\u00c9valuation dynamique d&rsquo;expressions<\/li>\n<li>Calculatrice en ligne de commande<\/li>\n<li>Math\u00e9matiques avanc\u00e9es<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 13 &#8211; Introduction \u00e0 la programmation Perl<\/strong>\n<ul>\n<li>G\u00e9n\u00e9ralit\u00e9s\n<ul>\n<li>Disponibilit\u00e9<\/li>\n<li>Utilisation<\/li>\n<\/ul>\n<\/li>\n<li>Expressions et variables\n<ul>\n<li>Variables scalaires<\/li>\n<li>Tables classiques<\/li>\n<li>Protection des expressions<\/li>\n<li>Tables de hachage<\/li>\n<\/ul>\n<\/li>\n<li>Op\u00e9rateurs\n<ul>\n<li>Op\u00e9rateurs num\u00e9riques<\/li>\n<li>Op\u00e9rateurs de cha\u00eene<\/li>\n<li>Recherche d&rsquo;expression rationnelle<\/li>\n<li>Substitution d&rsquo;expressions rationnelles<\/li>\n<li>Conversions de caract\u00e8res<\/li>\n<\/ul>\n<\/li>\n<li>Structures de contr\u00f4le\n<ul>\n<li>Structure de test<\/li>\n<li>Structure de boucles<\/li>\n<\/ul>\n<\/li>\n<li>D\u00e9finitions de fonctions\n<ul>\n<li>D\u00e9finition et invocation<\/li>\n<li>Param\u00e8tres et r\u00e9sultats<\/li>\n<li>Passage des arguments<\/li>\n<li>Port\u00e9e des variables<\/li>\n<li>R\u00e9f\u00e9rences symboliques de routines<\/li>\n<li>Prototypes<\/li>\n<\/ul>\n<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 14 &#8211; Biblioth\u00e8que interne de Perl<\/strong>\n<ul>\n<li>Entr\u00e9es-sorties\n<ul>\n<li>Fichiers de texte<\/li>\n<li>Fichiers binaires<\/li>\n<\/ul>\n<\/li>\n<li>Manipulation des donn\u00e9es\n<ul>\n<li>Type des donn\u00e9es<\/li>\n<li>Fonctions num\u00e9riques<\/li>\n<li>Cha\u00eenes de caract\u00e8res<\/li>\n<li>Expressions rationnelles<\/li>\n<li>Tableaux et listes<\/li>\n<li>Tables de hachage<\/li>\n<\/ul>\n<\/li>\n<li>Interaction avec le syst\u00e8me d&rsquo;exploitation\n<ul>\n<li>Gestion de la m\u00e9moire<\/li>\n<li>Fichiers et r\u00e9pertoires<\/li>\n<li>Action bas niveau sur les fichiers<\/li>\n<li>Ex\u00e9cution du processus<\/li>\n<li>Information syst\u00e8me<\/li>\n<li>Date et heure<\/li>\n<\/ul>\n<\/li>\n<li>Communication\n<ul>\n<li>Signaux<\/li>\n<li>Tube Unix<\/li>\n<\/ul>\n<\/li>\n<li>Ce que nous avons ignor\u00e9\n<ul>\n<li>Formats, rapports<\/li>\n<li>Communication entre processus<\/li>\n<li>Modules et objets<\/li>\n<\/ul>\n<p>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 15 &#8211; Programmation avanc\u00e9e et objet en Perl<\/strong>\n<ul>\n<li>R\u00e9f\u00e9rences\n<ul>\n<li>R\u00e9f\u00e9rences symboliques<\/li>\n<li>R\u00e9f\u00e9rences physiques<\/li>\n<li>Conteneurs anonymes<\/li>\n<li>Routines anonymes<\/li>\n<\/ul>\n<\/li>\n<li>Objets\n<ul>\n<li>Classes et attributs<\/li>\n<li>M\u00e9thodes<\/li>\n<li>Fonctions d&rsquo;acc\u00e8s<\/li>\n<li>Constructeur et destructeur<\/li>\n<li>H\u00e9ritage<\/li>\n<\/ul>\n<\/li>\n<li>Modules\n<ul>\n<li>Objets et modules<\/li>\n<li>M\u00e9thode AUTOLOAD<\/li>\n<li>M\u00e9thodes BEGIN et END<\/li>\n<li>Contr\u00f4le des symboles export\u00e9s<\/li>\n<\/ul>\n<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 16 &#8211; Programmation r\u00e9seau en Perl<\/strong>\n<ul>\n<li>Supervision des paquets TCP\/IP bruts<\/li>\n<li>Serveurs et clients TCP\/IP et UDP\/IP\n<ul>\n<li>Serveur TCP\/IP<\/li>\n<li>Client TCP\/IP<\/li>\n<li>Serveur UDP\/IP<\/li>\n<li>Client UDP\/IP<\/li>\n<\/ul>\n<\/li>\n<li>Client TCP\/IP et POP-3<\/li>\n<li>Programmation Web<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 17 &#8211; Nouveaut\u00e9s Perl<\/strong>\n<ul>\n<li>Unicode<\/li>\n<li>Programmation multithreads\n<ul>\n<li>Principe des threads<\/li>\n<li>Cr\u00e9ation d&rsquo;un thread<\/li>\n<li>Partage des variables<\/li>\n<li>Fin d&rsquo;un thread<\/li>\n<li>Identification des threads<\/li>\n<\/ul>\n<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 18 &#8211; Le langage Tcl<\/strong>\n<ul>\n<li>G\u00e9n\u00e9ralit\u00e9s\n<ul>\n<li>Ex\u00e9cution des scripts<\/li>\n<li>Caract\u00e9ristiques du langage<\/li>\n<\/ul>\n<\/li>\n<li>Expressions et variables\n<ul>\n<li>Op\u00e9rateurs et expressions<\/li>\n<li>Substitution de commandes<\/li>\n<li>Variables, tableaux et liste<\/li>\n<\/ul>\n<\/li>\n<li>Structures de contr\u00f4le\n<ul>\n<li>Tests<\/li>\n<li>Boucles<\/li>\n<li>Rupture de s\u00e9quences<\/li>\n<li>Fonctions personnelles<\/li>\n<li>Arr\u00eat d&rsquo;ex\u00e9cution<\/li>\n<li>Gestion des erreurs<\/li>\n<\/ul>\n<\/li>\n<li>Fonctions internes\n<ul>\n<li>Entr\u00e9es-sorties<\/li>\n<li>Math\u00e9matiques<\/li>\n<li>Traitement de cha\u00eenes<\/li>\n<li>Traitement de listes<\/li>\n<li>Traitement de tableaux<\/li>\n<li>Fonctions syst\u00e8me<\/li>\n<li>Ex\u00e9cution du script<\/li>\n<\/ul>\n<\/li>\n<li>Programmation avanc\u00e9e\n<ul>\n<li>Collaboration avec le langage C<\/li>\n<\/ul>\n<p>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 19 &#8211; La biblioth\u00e8que Tk<\/strong>\n<ul>\n<li>G\u00e9n\u00e9ralit\u00e9s\n<ul>\n<li>Positionnement<\/li>\n<\/ul>\n<\/li>\n<li>Widgets\n<ul>\n<li>Les frames<\/li>\n<li>Les boutons<\/li>\n<li>Les \u00e9tiquettes<\/li>\n<li>Les zones de saisie<\/li>\n<li>Les menus<\/li>\n<li>Listes et \u00e9chelles<\/li>\n<li>Barres de d\u00e9filement<\/li>\n<li>Zones de dessin<\/li>\n<\/ul>\n<\/li>\n<li>\u00c9v\u00e9nements<\/li>\n<li>Fen\u00eatres et bo\u00eetes de dialogue<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 20 &#8211; Perl\/Tk<\/strong>\n<ul>\n<li>La biblioth\u00e8que Perl\/Tk<\/li>\n<li>Syntaxe<\/li>\n<li>Exemple<\/li>\n<li>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 21 &#8211; Notions de Python<\/strong>\n<ul>\n<li>Introduction<\/li>\n<li>Structures de contr\u00f4le\n<ul>\n<li>Boucle while<\/li>\n<li>Boucle for<\/li>\n<li>Test if<\/li>\n<li>Ruptures de s\u00e9quences<\/li>\n<li>D\u00e9finitions de fonction<\/li>\n<li>Gestion d&rsquo;erreur<\/li>\n<\/ul>\n<\/li>\n<li>Donn\u00e9es et expressions\n<ul>\n<li>Types de donn\u00e9es<\/li>\n<li>Donn\u00e9es num\u00e9riques<\/li>\n<li>Cha\u00eenes<\/li>\n<li>Listes<\/li>\n<li>n-uplets<\/li>\n<li>Dictionnaires<\/li>\n<li>Affectations multiples<\/li>\n<li>Fichiers<\/li>\n<\/ul>\n<\/li>\n<li>Programmation orient\u00e9e objet\n<ul>\n<li>Classes et instances<\/li>\n<li>Constructeurs<\/li>\n<li>Accesseurs<\/li>\n<li>Surcharge d&rsquo;op\u00e9rateur<\/li>\n<li>H\u00e9ritage<\/li>\n<\/ul>\n<\/li>\n<li>Modules\n<ul>\n<li>Chargement d&rsquo;un module<\/li>\n<li>Rechargement d&rsquo;un module<\/li>\n<li>Importation de symboles<\/li>\n<li>Tables des symboles<\/li>\n<li>Modules standards<\/li>\n<\/ul>\n<p>Conclusion<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 22 &#8211; Introduction \u00e0 Ruby<\/strong>\n<ul>\n<li>Introduction<\/li>\n<li>Programmation objet en Ruby\n<ul>\n<li>Classes et instances<\/li>\n<li>M\u00e9thodes &#8211; Contr\u00f4le d&rsquo;acc\u00e8s<\/li>\n<li>Attributs et accesseurs<\/li>\n<li>Attributs et m\u00e9thodes de classe<\/li>\n<li>H\u00e9ritage<\/li>\n<li>Modules<\/li>\n<li>M\u00e9langes &#8211; Mixings<\/li>\n<li>Surcharge des op\u00e9rateurs<\/li>\n<\/ul>\n<\/li>\n<li>\u00c9l\u00e9ments de programmation\n<ul>\n<li>Types de donn\u00e9es<\/li>\n<li>Organisation des donn\u00e9es<\/li>\n<li>Structures de contr\u00f4le<\/li>\n<\/ul>\n<\/li>\n<li>Librairie standard<\/li>\n<\/ul>\n<\/li>\n<li><strong>Chapitre 23 &#8211; Pour finir\u2026<\/strong><\/li>\n<li><strong>Bibliographie<\/strong>\n<ul>\n<li>Livres et articles<\/li>\n<li>Sites de r\u00e9f\u00e9rences<\/li>\n<\/ul>\n<\/li>\n<li><strong>Index<\/strong><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Ce livre est une introduction &agrave; la programmation par scripts sous Linux. Il permet d&rsquo;aborder l&rsquo;&eacute;criture de scripts shell, l&rsquo;utilisation des expressions rationnelles, et les outils Grep, Sed et Awk. On aborde &eacute;galement d&rsquo;&eacute;criture de scripts en langage Perl. Ces premiers langages sont &eacute;tudi&eacute;s jusqu&rsquo;&agrave; atteindre un niveau de programmation assez avanc&eacute;. Ensuite, les langages [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":15,"menu_order":4,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-113","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/pages\/113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/comments?post=113"}],"version-history":[{"count":2,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/pages\/113\/revisions"}],"predecessor-version":[{"id":7028,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/pages\/113\/revisions\/7028"}],"up":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/pages\/15"}],"wp:attachment":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/media?parent=113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}