INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
LICENCE 1 - L1MPC
Année académique 2023/2024
USTM - FRANCEVILLE - GABON
Volume horaire : 30 H
BVH Page 1 of 11
BOUITYVOUBOU Henri Mesmin Noël
[email protected]
2
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
Table des matières
Introduction 4
Interpréteurs de commandes 5
Principales commandes utiles 6
cat : concatenate files and print on the standard output . . . . . . . . . . . . . . . . . . . . . . . . 6
cut : remove sections from each line of files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
head : output the first part of files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
tail : output the last part of files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
echo : display a line of text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Shell-Script (bourne shell) 7
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
les variables sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Accès aux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Entrées/Sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Evaluations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
expr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
eval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Structures de contôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
boucle Pour : for ... do ... done . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
boucle Tant que : while ... do ... done . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Condition : if ... then ..... else .... fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Branchement : case ... esac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
lecture de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
BVH Page 3 of 11
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
Introduction
La programmation de scripts Bash se réfère à l’écriture de scripts utilisant le langage de script Bash (Bourne
Again SHell). Bash est un interpréteur de commandes souvent utilisé dans les systèmes d’exploitation de
type Unix, tels que Linux. Les scripts Bash sont des séquences de commandes qui sont exécutées dans un
ordre défini pour automatiser des tâches, manipuler des fichiers, traiter des données, ou effectuer d’autres
opérations système. Voici quelques caractéristiques importantes de la programmation de scripts Bash :
Interprété : Les scripts Bash sont exécutés par l’interpréteur Bash, ce qui signifie qu’ils ne nécessitent
pas de compilation préalable. Cela facilite le développement et la modification rapide des scripts.
Gestion des Processus : Il gère l’exécution des programmes et des processus sur l’ordinateur, en
coordonnant l’utilisation du processeur et de la mémoire.
Shell scripting : Bash est un shell, ce qui signifie qu’il sert d’interface entre l’utilisateur et le système
d’exploitation. Les scripts Bash permettent aux utilisateurs de combiner des commandes shell pour
effectuer des tâches complexes.
Contrôle de flux : Les scripts Bash incluent des structures de contrôle de flux telles que les boucles
(for, while) et les structures conditionnelles (if, else) pour permettre la prise de décisions et l’itération.
Variables : Les scripts Bash utilisent des variables pour stocker des valeurs. Les variables peuvent
être définies et manipulées pour effectuer des opérations sur les données.
Fonctions: Les scripts Bash peuvent inclure des fonctions pour organiser le code en blocs réutilisables.
Expressions régulières : Bash prend en charge l’utilisation d’expressions régulières pour effectuer
des opérations de recherche et de remplacement dans les chaı̂nes de texte.
Un script Bash typique commence par une ligne spéciale, appelée shebang, qui indique le chemin vers
l’interpréteur Bash. Ensuite, le script consiste en une séquence de commandes Bash.
1 # !/ bin / bash
2 echo " Bonjour , quel est votre nom ? "
3 read nom
4
5 echo " Quel est votre AGE ? "
6 read age
7
8 echo " $ nom vous avez $ age ans "
9
10 # Exemple de boucle
11 for i in {1..5}
12 do
13 echo " $ i "
14 done
Dans le cadre de ce cours, nous allons essentiellement étudier la programmation script en bash.
BVH Page 4 of 11
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
Interpréteurs de commandes
Les interpréteurs de commandes permettent aux utilisateurs d’interagir avec le système d’exploitation en
entrant des commandes textuelles. Ils sont utilisés pour lancer des programmes, naviguer dans le système
de fichiers, gérer les processus, et effectuer diverses tâches système. Les scripts Bash, par exemple, sont des
séquences de commandes Bash interprétées par l’interpréteur Bash.
Il en existe différents interpréteurs de commandes:
1. Bash (Bourne Again SHell) : Bash est l’un des interpréteurs de commandes les plus populaires et est
largement utilisé dans les systèmes basés sur Unix, y compris Linux. Il est compatible avec le shell
Bourne original et offre de nombreuses fonctionnalités supplémentaires, telles que des fonctions, des
boucles, et des expressions régulières.
2. Sh (Bourne Shell) : C’est le shell original développé par Stephen Bourne. Bien que moins puissant que
Bash, il reste présent sur de nombreux systèmes Unix.
3. Zsh (Z Shell) : Zsh est un shell avancé avec de nombreuses fonctionnalités supplémentaires par rapport
à Bash, comme la correction automatique des erreurs de frappe, des thèmes personnalisables, et une
meilleure gestion des fichiers.
4. Fish (Friendly Interactive SHell) : Fish se distingue par son approche conviviale pour les utilisateurs.
Il propose une auto-complétion interactive, une coloration syntaxique améliorée, et d’autres fonction-
nalités conviviales.
5. Dash : Dash est un shell minimaliste conçu pour être rapide et léger. Il est souvent utilisé comme
/bin/sh sur certains systèmes Unix.
6. PowerShell : Bien que principalement associé à Microsoft Windows, PowerShell est un shell et un
langage de script puissant qui est également disponible pour certaines distributions Linux.
7. tcsh (Tenex C Shell) : tcsh est une version améliorée du C Shell (csh) avec des fonctionnalités
supplémentaires telles que l’historique des commandes et la complétion automatique.
Un interpréteur de commandes (shell en anglais) est un programme qui agit en tant qu’interface utilisateur
pour l’accès au système d’exploitation. Il permet aux utilisateurs d’entrer des commandes textuelles qui sont
interprétées et exécutées par le système d’exploitation. Les interpréteurs de commandes sont une composante
essentielle des systèmes d’exploitation de type Unix, tels que Linux, macOS, et d’autres variantes d’Unix.
BVH Page 5 of 11
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
Principales commandes utiles
cat : concatenate files and print on the standard output
cat [OPTION]... [FILE]...
Les options peuvent prendre différentes valeures telles que :
-n, –number : number all output lines
-E, –show-ends : display $ at end of each line
cut : remove sections from each line of files
cut [OPTION]... [FILE]...
Les options peuvent prendre différentes valeures telles que :
-d, –delimiter=DELIM : use DELIM instead of TAB for field delimiter
-f, –fields=LIST : select only these fields; also print any line that contains no delimiter character, unless
the -s option is specified
head : output the first part of files
head [OPTION]... [FILE]...
Les options peuvent prendre différentes valeures telles que :
-c, –bytes=[-]NUM : print the first NUM bytes of each file;
-n, –lines=[-]NUM : print the first NUM lines instead of the first 10;
tail : output the last part of files
tail [OPTION]... [FILE]...
Les options peuvent prendre différentes valeures telles que :
-c, –bytes=[+]NUM : output the last NUM bytes;
-n, –lines=[+]NUM : output the last NUM lines, instead of the last 10;
echo : display a line of text
echo [SHORT-OPTION]... [STRING]...
Les options peuvent prendre différentes valeures telles que :
-n : do not output the trailing newline
-e : enable interpretation of backslash escapes
-E : disable interpretation of backslash escapes (default)
BVH Page 6 of 11
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
Shell-Script (bourne shell)
Les scripts Bash sont largement utilisés pour l’automatisation des tâches système, la gestion de fichiers, la
configuration du système, et d’autres opérations liées à l’administration système.
Shell :
1. c’ets l’interface de l’utilisateur pour lancer des commandes
2. il permet d’executer des scripts
Shell-script :
1. c’est un fichier de commandes
2. qui sera appelé comme une commande de base : monscript.sh
3. ce fichier porte l’extension .sh
4. qui contient en début de lignes, la spécification de de l’interpréteur utilisé
5. le fichier doit disposer des droits d’exécution (chmod 777 monscript.sh)
Cette section décrit par ordre de préférence les éléments de base utiles pour cette formation.
Variables
les variables sh
$HOME : répertoire de base
$PATH : repertoires de re her hes des
$PS1 , $PS2 : prompts
$# : nombre de paramètres du script
$0 à $9 : parametres 0 (nom de la ommande) à 9
$* : tous les parametres
$? : code de retour (erreur) de la dernière commande
1 # ! / bin / sh
2 echo " commande $ 0 "
3 echo " avec $# arguments "
4 echo " avec $$ processus "
5 echo " avec pour parametre 1 = $ 1 "
6 echo " avec pour arguments : $ * "
Accès aux variables
L’accès aux variables se fait directement par appel précédé du caractère $ suivi du nom de la variable.
Exemple :
1 # ! / bin / sh
2 var = 150
3 nom = " Henri "
4 echo " $ var "
5 echo " $ nom "
BVH Page 7 of 11
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
Entrées/Sorties
Dans cet exemple, je vous montre comment lire au clavier une valeur et afficher le résultat à l’écran :
1 # ! / bin / sh
2 echo " entrez un nombre : "
3 read var
4 echo " vous avez saisi : $ var "
L’entrée standard ici est considérée comme le clavier et la sortie comme étant l’écran.
Fonctions
1 # ! / bin / sh
2 arguments () {
3 echo " fonction arguments : $ * "
4 }
5 echo " dans le shell $ * "
6 arguments " hello my friend "
1 monscript . sh bonjour
2 bonjour
3 hello my friend
Evaluations
expr
Pour calculer la valeur d’une expression, on peut utliser aussi la commande expr de la façon suivante :
1. Expressions booléennes :
1 expr 45 != 20
2 expr 45 = 20
3 expr 45 < 20
4 expr 45 > 20
2. Expressions arithmétiques :
1 expr 45 - 20
2 expr 2 + 18
3 expr 45 * 20
4 expr 45 / 9
3. Modification de la variable a :
1 a = 10
2 a = ‘ expr $ a + 1 ‘
3 a = ‘ expr $ a - 1 ‘
4 a = ‘ expr $ a * 2 ‘
BVH Page 8 of 11
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
eval
Exécution par le shell en deux phases :
Evaluation des arguments de eval
Réévaluation des arguments et exécuution de la commande
1 % var = ’ $ val ’
2 % echo $ var
3 $
4 % val = ’ Unix ’
5 % eval echo $ var
Exemple : accès au dernier argument d’un script ( inférier à 9)
1 eval dernier =\ $ "$# "
2 echo $ dernier
test
1 # ! / bin / sh
2 var =10
3 while test $ var - ge 4
4 do
5 e ho " $ var "
6 var = ‘ expr $ var - 1 ‘
7 done
Structures de contôle
boucle Pour : for ... do ... done
1 # ! / bin / sh
2 for i in Lenine Staline Krout hev Brejnev
3 do
4 echo " $ i fut maitre de la Russie ! "
5 done
6 echo " -"
7 # aussi possible : for i in *
8 for i in ‘ ls * ‘
9 do
10 echo " $ i est un fichier "
11 done
1 # ! / bin / sh
2 for i in $ *
3 do
4 echo $ i
5 done
BVH Page 9 of 11
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
1 # ! / bin / sh
2 for i in $ @
3 do
4 echo $ i
5 done
$@ == $* : les arguments de la sommande sont réexaminées
”$*” est un seul mot composé de tous les arguments
”$@” : fournit exactement les arguments
boucle Tant que : while ... do ... done
1 # ! / bin / sh
2 var =10
3 while test $ var - ge 4
4 do
5 echo " $ var "
6 var = ‘ expr $ var - 1 ‘
7 done
Condition : if ... then ..... else .... fi
1 # ! / bin / sh
2 if test $# - ne 1
3 then
4 e ho " erreur nombre d ’ arguments " 1 >&2
5 exit 1
6 fi
1 # ! / bin / sh
2 FILE = $ 1
3 if test ! -f $ FILE
4 then
5 echo " erreur : $ FILE n ’ existe pas " 1 >&2
6 exit 1
7 else
8 echo " $ FILE existe , je l ’ ai vu "
9 fi
Branchement : case ... esac
1 # ! / bin / sh
2 case $ file in
3 *. p )
4 echo " $ file is a pas al program " ;;
5 *. )
6 echo " $ file is a C program " ;;
7 *. |*. ++)
BVH Page 10 of 11
INFORMATIQUE 1A
Chapitre 2
Programmation Script-Bash
8 echo " $ file is a C ++ program " ;;
9 *)
10 echo "I ’ m rather puzzled "
11 echo "
12 with that $ file " ;;
13 esac
lecture de fichiers
Traiter séquentiellement une à une, les lignes d’un fichier
1 # ! / bin / sh
2 while read laligne
3 do
4 # traitement de la ligne
5 ...
6 done < $ file
1 # ! / bin / sh
2 nlignes = ‘ w -l < $ file ‘
3 i =1
4 while test $ i - le $ nlignes
5 do
6 laligne = ‘ readline $ file $ i ‘
7 # traitement de la ligne
8 ...
9 i = ‘ expr $ i + 1 ‘
10 done
BVH Page 11 of 11