-
BASH Scripting
Présenté par :
Pr. Nordine
ZIDANE
[Link] SUPMTI 2023-2024
16-11-2023 1 1
08-Scripting BASH
Simplification d’administration
[Link] SUPMTI 2023-2024 2
Scripting BASH
Objectifs de ce module
En suivant ce module vous allez:
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.
[Link] SUPMTI 2023-2024 3
Scripting BASH
Plan du module
Voici les parties que nous allons aborder:
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.
[Link] SUPMTI 2023-2024 4
Qu'est-ce que BASH ?
[Link]
[Link] SUPMTI
SUPMTI 2022-2023 2023-2024 5
Qu’est ce que BASH ?
Plan de la partie
Voici les chapitres que nous allons aborder:
Présentation.
Les commandes.
Les variables.
Les Alias.
[Link] SUPMTI 2023-2024 6
Qu'est-ce que BASH ?
Présentation
Bourne
Again
SHell
[Link] SUPMTI 2023-2024 7
Qu'est-ce que BASH ?
Présentation
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.
[Link] SUPMTI 2023-2024 8
Qu'est-ce que BASH ?
Présentation
1 2
[user@linux ~]$ echo "Hello world!"
Hello world!
3
L'affichage classique est composé...
1 Un prompt fournissant diverses
informations.
2 Un espace réservé à l’entrée de
commandes
3 Une zone affichant le résultat
des commandes utilisées.
[Link] SUPMTI 2023-2024 9
Qu'est-ce que BASH ?
Les commandes et les Variables
[user@linux ~]$ os=“GNU/Linux”
[user@linux ~]$ echo “Ce système d’exploitation est $os”
Ce système d’exploitation est GNU/Linux.
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
[Link] SUPMTI 2023-2024 1
Qu'est-ce que BASH ?
Les commandes et les Variables
[user@linux ~]$ read [-p prompt] [variable]
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.
read # stocke l’entrée dans REPLY
read VAR # stocke l’entrée dans VAR
[user@linux ~]$ read –p “Nom de l’OS ?” os
Nom de l’OS ? OpenBSD
[user@linux ~]$ echo “Ce système d’exploitation est $os”
Ce système d’exploitation est OpenBSD.
[Link] SUPMTI 2023-2024 1
Qu'est-ce que BASH ?
Les commandes et les Variables
Subtilités ...
var=“ls”
echo “var = $var” # affiche : var = ls
echo ’var = $var’ # affiche : var = $var
echo “var = “`$var` # affiche : var = script
Un peu de vocabulaire :
« " » : double quote
« ' » : simple quote
« ` » : backquote ou backtick (AltGr + 7)
[Link] SUPMTI 2023-2024 1
Qu'est-ce que BASH ?
Les commandes et les Variables
Les variables d’environnement :
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 :
[user@linux ~]$ env
HOME=/home/user
PATH=/usr/local/bin:/usr/bin:/bin:/opt/bin
TERM=xterm
EDITOR=/bin/nano
[Link] SUPMTI 2023-2024 1
Qu'est-ce que BASH ?
Les commandes et les Variables
Modifications des variables « classiques» : valables
seulement pour le shell courant.
Pour que les variables soient accessibles à
l'environnement, on doit « exporter » la variable.
[user@linux ~]$ echo $EDITOR
EDITOR=/usr/bin/nano
[user@linux ~]$ EDITOR=/usr/bin/vi
[user@linux ~]$ export EDITOR
Dans tous les cas, les variables sont détruites à la
fermeture du shell ou du processus.
[Link] SUPMTI 2023-2024 1
Qu'est-ce que BASH ?
Les alias
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.
[user@linux ~]$ alias ll=“ls –l”
[user@linux ~]$ ll
total 6794
-rw-r--r-- 1 root root 18693 Sep 22 21:01 COPYING
-rw-r--r-- 1 root root 89517 Sep 22 21:01 CREDITS
drwxr-xr-x 59 root root 6048 Sep 22 21:02 Documentation
[Link] SUPMTI 2023-2024 1
Qu'est-ce que BASH ?
Récapitulatif
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.
[Link] SUPMTI 2023-2024 1
Qu'est-ce que BASH ?
Pause-réflexion
Avez-vous des questions ?
[Link] SUPMTI 2023-2024 1
Scripting BASH
Configuration de BASH
[Link] SUPMTI 2023-2024 1
Configuration de Bash
Plan de la partie
Voici les chapitres que nous allons aborder:
Les fichiers de configuration.
Les modes d’exécution.
Exemple
[Link] SUPMTI 2023-2024 1
Configuration de BASH
Les fichiers de configuration
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.
[Link] SUPMTI 2023-2024 2
Configuration de BASH
Les modes d'éxécutions
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
1 S'il existe, éxécute /etc/profile
2 Exécute le premier trouvé entre
~/.bash_profile, ~/.bash_login,
~/.profile
Shell interactif classique
1 S'il existe, éxécute /etc/bash/bashrc
2 S'il existe, éxecute ~/.bashrc
[Link] SUPMTI 2023-2024 2
Configuration de BASH
Exemple
[user@linux ~]$ 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`
[Link] SUPMTI 2023-2024 2
Configuration de BASH
Récapitulatif
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.
[Link] SUPMTI 2023-2024 2
Configuration de BASH
Pause-réflexion
Avez-vous des questions ?
[Link] SUPMTI 2023-2024 2
Scripting BASH
Créer un shell script
Où comment automatiser les tâches administratives.
[Link] SUPMTI 2023-2024 2
Créer un shell script
Plan de la partie
Voici les chapitres que nous allons aborder :
Qu'est-ce qu'un script.
Invocation d'un script.
Les arguments.
Sortie du script et signaux.
[Link] SUPMTI 2023-2024 2
Créer un shell script
Qu'est-ce qu'un script
Un fichier texte contenant un ensemble de commande.
Les commentaires commencent par #
La première ligne indique l'interpréteur (shebang)
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/python
[Link] SUPMTI 2023-2024 2
Créer un shell script
Invocation d'un script
Définir les bonnes permissions
[user@linux ~]$ chmod +x [Link]
Exécution d'un script :
Charge l'interpréteur pour exécuter le script. Seules les
./[Link] variables exportées sont disponibles à l'intérieur du
script.
source [Link]
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
. [Link]
[Link] SUPMTI 2023-2024 2
Créer un shell script
Les arguments
Arguments passés à la ligne de commande
#!/bin/bash
# Exemple de script Bash
#
echo $0 $1 $2
A l'éxécution :
[user@linux ~]$./script labo linux
./script labo linux
$* : tous les arguments sous la forme d'une chaîne de caractères
$@ : tous les arguments sous la forme d'un tableau
[Link] SUPMTI 2023-2024 2
Créer un shell script
Sortie du script et signaux
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
[Link] SUPMTI 2023-2024 3
Créer un shell script
Pause-réflexion
Avez-vous des questions ?
[Link] SUPMTI 2023-2024 3
Scripting BASH
Les structures
[Link] SUPMTI 2023-2024 3
Les structures
Plan de la partie
Voici les chapitres que nous allons aborder :
La structure conditionnelle if.
Le switch.
Les boucles.
Le for.
Les instructions de contrôle.
Les fonctions.
[Link] SUPMTI 2023-2024 3
Les structures
La structure conditionnelle if
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”;
else echo “false”; fi
if [ `a` = `a` ]; then echo “true”;
elif [ `b` = `b` ]; echo “false”; fi
[Link] SUPMTI 2023-2024 3
Les structures
Le switch
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
[Link] SUPMTI 2023-2024 3
Les structures
Les boucles
while condition; do commande; done
i=0
while [ $i -lt 3 ]; do
echo $i; let $[ i += 1 ]
done
until condition; do commande; done
i=0
until [ $i -eq 3 ]; do
echo $i; let $[ i += 1 ]
done
[Link] SUPMTI 2023-2024 3
Les structures
Le for
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
[Link] SUPMTI 2023-2024 3
Les structures
Les instructions de controle
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.
[Link] SUPMTI 2023-2024 3
Les structures
Les fonctions
Se comportent comme des variables.
Peuvent être 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;
}
[Link] SUPMTI 2023-2024 3
Les structures
Pause-réflexion
Avez-vous des questions ?
[Link] SUPMTI 2023-2024 4
Scripting BASH
Autres fonctionnalités
[Link] SUPMTI 2023-2024 4
Autres fonctionnalités
Plan de la partie
Voici les chapitres que nous allons aborder :
Syntaxe.
Effectuer des calculs.
Nombres aléatoires.
Interfaces graphiques.
[Link] SUPMTI 2023-2024 4
Autres fonctionnalités
Syntaxe
Commentaires
# exemple de commentaire
Variables
var=‘linux’
echo $var
echo ${var}
[Link] SUPMTI 2023-2024 4
Autres fonctionnalités
Effectuer des calculs
Pour évaluer : expr
[user@linux ~]$ expr 3 + 7
10
La commande let
i=3
let $[ i += 7 ]
echo $i # affiche 10
[Link] SUPMTI 2023-2024 4
Autres fonctionnalités
Nombre aléatoire
Variable spéciale $RANDOM
Génère un nombre de 5 chiffres.
echo $RANDOM
echo $RANDOM % <chiffre>
[Link] SUPMTI 2023-2024 4
Autres fonctionnalités
Interfaces graphiques
Le programme dialog permet de créer des boîtes de
dialogue au sein d'un script BASH :
[Link] SUPMTI 2023-2024 4
Autres fonctionnalités
Pause-réflexion
Avez-vous des questions ?
[Link] SUPMTI 2023-2024 4
Scripting Bash
Résumé du module
Présentation
Présentation
de
de Bash
Bash
Création
Création de
de Les
Les Structures
Structures
Script
Script
[Link] SUPMTI 2023-2024 4
Scripting Bash
Pour aller plus loin…
Si vous voulez approfondir vos connaissances:
Publications Modules de cours
Commandes de base
[Link] Sed et Awk
Sites web Conférences
[Link] .
[Link] SUPMTI 2023-2024 4
Félicitations
Vous avez suivi avec succès le
module de cours n°08
Bash Scripting
[Link] SUPMTI 2023-2024 5
Bash Scripting
Fin
Afin d'assimiler l'utilisation du Bash Scripting, il est conseillé de
pratiquer le plus possilbe
[Link] SUPMTI 2023-2024 5