Vous êtes sur la page 1sur 51

-

BASH Scripting
 Présenté par :
 Pr. Nordine
ZIDANE

N.ZIDANE SUPMTI 2023-2024


16-11-2023 1 1
08-Scripting BASH

Simplification d’administration

N.ZIDANE 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.

N.ZIDANE 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.

N.ZIDANE SUPMTI 2023-2024 4


Qu'est-ce que BASH ?

N.ZIDANE
N.ZIDANE 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.

N.ZIDANE SUPMTI 2023-2024 6


Qu'est-ce que BASH ?

Présentation

Bourne
Again
SHell

N.ZIDANE 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.

N.ZIDANE 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.
N.ZIDANE 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

N.ZIDANE 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.

N.ZIDANE 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)

N.ZIDANE 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

N.ZIDANE 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.

N.ZIDANE 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

N.ZIDANE 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.

N.ZIDANE SUPMTI 2023-2024 1


Qu'est-ce que BASH ?

Pause-réflexion
Avez-vous des questions ?

N.ZIDANE SUPMTI 2023-2024 1


Scripting BASH

Configuration de BASH

N.ZIDANE 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

N.ZIDANE 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.

N.ZIDANE 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

N.ZIDANE 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`

N.ZIDANE 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.

N.ZIDANE SUPMTI 2023-2024 2


Configuration de BASH

Pause-réflexion
Avez-vous des questions ?

N.ZIDANE SUPMTI 2023-2024 2


Scripting BASH

Créer un shell script

Où comment automatiser les tâches administratives.

N.ZIDANE 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.

N.ZIDANE 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

N.ZIDANE SUPMTI 2023-2024 2


Créer un shell script

Invocation d'un script


 Définir les bonnes permissions

[user@linux ~]$ chmod +x script.sh

 Exécution d'un script :


Charge l'interpréteur pour exécuter le script. Seules les
./script.sh variables exportées sont disponibles à l'intérieur du
script.

source script.sh
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
. script.sh

N.ZIDANE 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

N.ZIDANE 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

N.ZIDANE SUPMTI 2023-2024 3


Créer un shell script

Pause-réflexion
Avez-vous des questions ?

N.ZIDANE SUPMTI 2023-2024 3


Scripting BASH

Les structures

N.ZIDANE 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.

N.ZIDANE 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

N.ZIDANE 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

N.ZIDANE 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

N.ZIDANE 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

N.ZIDANE 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.

N.ZIDANE 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;
}

N.ZIDANE SUPMTI 2023-2024 3


Les structures

Pause-réflexion
Avez-vous des questions ?

N.ZIDANE SUPMTI 2023-2024 4


Scripting BASH

Autres fonctionnalités

N.ZIDANE 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.

N.ZIDANE SUPMTI 2023-2024 4


Autres fonctionnalités

Syntaxe
 Commentaires

# exemple de commentaire

 Variables
var=‘linux’
echo $var
echo ${var}

N.ZIDANE 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

N.ZIDANE 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>

N.ZIDANE 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 :

N.ZIDANE SUPMTI 2023-2024 4


Autres fonctionnalités

Pause-réflexion
Avez-vous des questions ?

N.ZIDANE 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

N.ZIDANE SUPMTI 2023-2024 4


Scripting Bash

Pour aller plus loin…


Si vous voulez approfondir vos connaissances:

Publications Modules de cours


 Commandes de base
www.dunod.com  Sed et Awk

Sites web Conférences

www.labo-linux.org .

N.ZIDANE SUPMTI 2023-2024 4


Félicitations
Vous avez suivi avec succès le
module de cours n°08
Bash Scripting

N.ZIDANE SUPMTI 2023-2024 5


Bash Scripting
Fin

 Afin d'assimiler l'utilisation du Bash Scripting, il est conseillé de


pratiquer le plus possilbe
N.ZIDANE SUPMTI 2023-2024 5

Vous aimerez peut-être aussi