Copyright © SUPINFO. All rights reserved Scripting BASH Simplification d’administration campus-Booster ID : **XXXXX
Objectifs de ce module Connaître ce qu'est BASH. Comment il fonctionne et qu'est- ce qu'un script BASH. Créer et invoquer un script. Savoir quoi écrire dans un script et comment l'invoquer. Automatiser des suites de commandes. Se donner les moyens pour simplifier l'administration. En suivant ce module vous allez: Scripting BASH
Plan du module Qu'est-ce que BASH. Un interpréteur et un langage de script. Les variables. Configuration de BASH. Les fichiers de configurations et les modes de fonctionnement. Créer un shell script. Syntaxe et invocation. Les structures. Boucles, itérations et fonctions. Autres fonctionnalités. Voici les parties que nous allons aborder: Scripting BASH
Qu'est-ce que BASH ? Scripting BASH
Plan de la partie Présentation. Les commandes. Les variables. Les Alias. Voici les chapitres que nous allons aborder: Qu’est ce que BASH ?
B ourne A gain SH ell Qu'est-ce que BASH ? Présentation
Qu'est-ce que BASH ? BASH, acronyme de Bourne-Again shell. Par défaut sur les systèmes GNU/linux. Programme interprétant les commandes : un shell Sous licence GPL En version 3 depuis Juillet 2004 Autres interpréteurs : sh, csh, ksh, zsh Langage de programmation simplifiant et automatisant l'administration d'un système UNIX.
Présentation Qu'est-ce que BASH ? L'affichage classique est composé... ~]$ echo "Hello world!" Hello world! Un prompt fournissant diverses informations. Un espace réservé à l’entrée de commandes Une zone affichant le résultat des commandes utilisées. 123
Les commandes et les Variables Qu'est-ce que BASH ? Les variables : Pas d'espace au niveau du signe égal Affectation : pas de « $ » Utilisation : « $ » devant le nom de la variable La commande echo : Affiche du texte à l’écran ~]$ os=“GNU/Linux” ~]$ echo “Ce système d’exploitation est $os” Ce système d’exploitation est GNU/Linux.
Qu'est-ce que BASH ? Lit une entrée clavier. Si le nom de la variable n'est pas précisé, la valeur est stockée dans la variable spéciale REPLY. Les commandes et les Variables ~]$ read [-p prompt] [variable] read# stocke l’entrée dans REPLY read VAR# stocke l’entrée dans VAR ~]$ read –p “Nom de l’OS ?” os Nom de l’OS ? OpenBSD ~]$ echo “Ce système d’exploitation est $os” Ce système d’exploitation est OpenBSD.
Qu'est-ce que BASH ? Subtilités... Un peu de vocabulaire : « " » : double quote « ' » : simple quote « ` » : backquote ou backtick (AltGr + 7) Les commandes et les Variables var=“ls” echo “var = $var”# affiche : var = ls echo ’var = $var’# affiche : var = $var echo “var = “`$var`# affiche : var = script
Qu'est-ce que BASH ? Variables spéciales modifiant le comportement du shell et/ou applications lancées depuis le shell. Définie et modifiée comme les variables « normales ». Pour lister les variables d'environnement du shell : Les commandes et les Variables ~]$ env HOME=/home/user PATH=/usr/local/bin:/usr/bin:/bin:/opt/bin TERM=xterm EDITOR=/bin/nano
Qu'est-ce que BASH ? Modifications des variables « classiques» : valables seulement pour le shell courant. Pour que les variables soient accessibles à l'environnement, on doit « exporter » la variable. Dans tous les cas, les variables sont détruites à la fermeture du shell ou du processus. Les commandes et les Variables ~]$ echo $EDITOR EDITOR=/usr/bin/nano ~]$ EDITOR=/usr/bin/vi ~]$ export EDITOR
Les alias Qu'est-ce que BASH ? BASH permet de créer des alias de commande. Les alias permettent d'abréger les longues commandes. Les alias sont effacés à la fermeture du shell. ~]$ alias ll=“ls –l” ~]$ ll total rw-r--r-- 1 root root Sep 22 21:01 COPYING -rw-r--r-- 1 root root Sep 22 21:01 CREDITS drwxr-xr-x 59 root root 6048 Sep 22 21:02 Documentation
Récapitulatif Qu'est-ce que BASH ? BASH est un interpréteur de commande très utilisé. L'utilisateur peut interagir avec BASH. Il est possible de définir des variables. Les variables d'environnements sont accessibles aux programmes lancés par le shell. Il est possible de définir des alias de commandes. Les alias et les variables sont effacés à la fermeture du shell.
Pause-réflexion Avez-vous des questions ? Qu'est-ce que BASH ?
Configuration de BASH Scripting BASH
Plan de la partie Les fichiers de configuration. Les modes d’exécution. Exemple Voici les chapitres que nous allons aborder: Configuration de Bash
Les fichiers de configuration Configuration de BASH Système : /etc/profile et /etc/bash/bashrc Utilisateur : ~/.bash_profile et ~/.bashrc Contiennent des commandes à éxécuter. Définissent les variables d'environnement et les alias.
Les modes d'éxécutions Configuration de BASH BASH peut etre lancé de 2 façons différentes, ce qui influence l'ordre de lecture des fichiers de configuration : Shell interactif de login Shell interactif classique S'il existe, éxécute /etc/profile Exécute le premier trouvé entre ~/.bash_profile, ~/.bash_login, ~/.profile 1 2 S'il existe, éxécute /etc/bash/bashrc S'il existe, éxecute ~/.bashrc 1 2
Exemple Configuration de BASH ~]$ cat.bashrc EDITOR="/usr/bin/vim" PATH="/opt/bin/:$PATH" export EDITOR PATH alias ls='li -lih' echo "Chargement de la configuration terminé." echo "Bienvenue "`whoami`
Récapitulatif Configuration de BASH Il existe une configuration pour le système et une configuration par utilisateur. Selon le mode d'exécution de BASH, des configuration différentes seront chargées. Les fichiers de configuration contiennent juste des commandes à exécuter. Il est possible de sauvegarder ses alias et ses variables, en utilisant les fichiers de configuration de BASH.
Pause-réflexion Avez-vous des questions ? Configuration de BASH
Créer un shell script Où comment automatiser les tâches administratives. Scripting BASH
Plan de la partie Créer un shell script Qu'est-ce qu'un script. Invocation d'un script. Les arguments. Sortie du script et signaux. Voici les chapitres que nous allons aborder :
Qu'est-ce qu'un script Créer un shell script Un fichier texte contenant un ensemble de commande. Les commentaires commencent par # La première ligne indique l'interpréteur. #!/bin/bash #!/usr/bin/perl #!/usr/bin/python
Invocation d'un script Créer un shell script Définir les bonnes permissions Exécution d'un script :./script.sh source script.sh. script.sh Charge l'interpréteur pour exécuter le script. Seules les variables exportées sont disponibles à l'intérieur du script. Le script est exécuté à l'intérieur du shell courant. Il a accès en lecture/écriture à toutes les variables précédemment définies ~]$ chmod +x script.sh
Les arguments Créer un shell script Arguments passés à la ligne de commande A l'éxécution : $* : tous les arguments sous la forme d'une chaîne de caractères : tous les arguments sous la forme d'un tableau #!/bin/bash # Exemple de script Bash # echo $0 $1 $2 ~]$./script labo linux./script labo linux
Sortie du script et signaux Créer un shell script L'instruction return : Renvoie une valeur de retour (pour une fonction) L'instruction exit : Sort et renvoie une valeur de retour (0 ou >0) La variable spéciale $? contient la valeur de retour de la commande précédente L'instruction trap permet d'intercepter un signal trap “echo Vous avez appuyé sur Ctrl-C” SIGINT
Sortie du script et signaux Créer un shell script BASH Application Exécution return exit renvoie $? Exécution BASH Application Ctrl+C Fin de l’application Exécution du trap
Pause-réflexion Avez-vous des questions ? Créer un shell script
Les structures Scripting BASH
Plan de la partie Les structures La structure conditionnelle if. Le switch. Les boucles. Le for. Les instructions de contrôle. Les fonctions. Voici les chapitres que nous allons aborder :
La structure conditionnelle if Les structures if condition; then commande; fi if condition; then commande; else commande; fi if condition; then commande; elif condition; commande; fi if [`a` = `a` ]; then echo “true”; fi if [`a` = `a` ]; then echo “true”; elif [ `b` = `b` ]; echo “false”; fi if [`a` = `a` ]; then echo “true”; else echo “false”; fi
Le switch Les structures Le switch : case “$OS” in unix) echo ‘Vous avez un Unix’ ;; [Bb][Ss][Dd]) echo ‘vous avez une BSD’ ;; Lin*) echo ‘vous avez GNU/Linux’ ;; *) echo ‘autre’ ;; esac
Les boucles Les structures while condition; do commande; done until condition; do commande; done i=0 while [ $i -lt 3 ]; do echo $i; let $[ i += 1 ] done i=0 until [ $i -eq 3 ]; do echo $i; let $[ i += 1 ] done
Le for Les structures La boucle for est équivalent au foreach existant dans de nombreux langages. L'instruction seq crée une séquence de nombres. for i `seq 1 5`; do echo $i done
Les instructions de controle Les structures Contrôle le déroulement des itérations d'une boucle : Instruction break : quitte la boucle. Instruction continue : stoppe l'itération en cours et passe directement à l'itération suivante.
Les fonctions Les structures Se comportent comme des variables. Peuvent etre définie directement dans le shell. La commande set permet de lister toutes les variables et les fonctions actuellement définies dans l'interpréteur de commande. function ma_fonction() { local var1 local var2=“valeur” commande1 commande2 return val; }
Pause-réflexion Avez-vous des questions ? Les structures
Autres fonctionnalités Scripting BASH
Plan de la partie Autres fonctionnalités Syntaxe. Effectuer des calculs. Nombres aléatoires. Interfaces graphiques. Voici les chapitres que nous allons aborder :
Syntaxe Commentaires Variables Autres fonctionnalités # exemple de commentaire Var=‘linux’ echo $var echo ${var}
Effectuer des calculs Pour évaluer : expr La commande let Autres fonctionnalités ~]$ expr i=3 let $[ i += 7 ] echo $i# affiche 10
Nombre aléatoire Variable spéciale $RANDOM Génère un nombre de 5 chiffres. Autres fonctionnalités echo $RANDOM echo $RANDOM %
Interfaces graphiques Le programme dialog permet de créer des boîtes de dialogue au sein d'un script BASH : Autres fonctionnalités
Pause-réflexion Avez-vous des questions ? Autres fonctionnalités
Les Structures Présentation de Bash Résumé du module Création de Script Scripting Bash
Pour aller plus loin… Modules de coursPublications Sites web Conférences. Si vous voulez approfondir vos connaissances: Scripting Bash Commandes de base Sed et Awk
Félicitations Vous avez suivi avec succès le module de cours n°06 Scripting Bash
Fin Scripting Bash Attention à la syntaxe ! Référez vous aux manpages