Maîtriser la
Programmation Shell
Maîtriser la Programmation Shell
Qu'est-ce qu'un Shell ?
Le Shell est une interface entre l'utilisateur et le système d'exploitation. Il permet à
l'utilisateur de communiquer avec le système en saisissant des commandes.
Rôle principal :
• Interpréter les commandes saisies par l'utilisateur.
• Exécuter ces commandes en interagissant avec le noyau du système d'exploitation.
Fonctionnalités principales :
• Exécution des commandes système (par exemple, pour manipuler des fichiers, gérer
les processus, etc.).
• Programmation simple grâce aux scripts Shell.
• Interaction avec les utilitaires du système.
Maîtriser la Programmation Shell
Qu'est-ce qu'un Shell ?
Types de Shell :
Shell en ligne de commande : comme Bash, qui accepte les commandes directement.
Shell graphique : intégré dans des interfaces comme GNOME ou KDE.
Exemple : Quand vous tapez ls pour lister les fichiers, le Shell interprète cette commande
et demande au système d'exploitation d'afficher les fichiers dans le répertoire courant.
KDE
GNOME
Maîtriser la Programmation Shell
Différences entre Shell interactif et scripté
Shell interactif : Mode où l'utilisateur interagit directement avec le Shell en saisissant
des commandes une par une.
Caractéristiques :
• Utilisé pour des tâches rapides ou ponctuelles.
• Chaque commande est exécutée immédiatement après avoir été saisie.
Exemple
Maîtriser la Programmation Shell
Différences entre Shell interactif et scripté
Shell scripté : Mode où un ensemble de commandes est écrit dans un fichier (script) et
exécuté dans son intégralité.
Caractéristiques :
Idéal pour automatiser des tâches répétitives ou complexes.
Permet d'utiliser des structures comme des boucles et des conditions.
Exemple
Maîtriser la Programmation Shell
Présentation des Shell couramment utilisés
Bash (Bourne Again Shell) :
Le plus utilisé dans les distributions Linux (par défaut sur Ubuntu, Fedora, etc.).
Fonctionnalités :
• Support des scripts avancés.
• Historique des commandes.
• Auto-complétion des commandes.
Zsh (Z Shell) :
Alternative puissante et hautement personnalisable.
Fonctionnalités :
• Auto-correction des commandes.
• Gestion avancée des plugins et thèmes .
• Fonctionnalités de Bash améliorées.
Maîtriser la Programmation Shell
Qu'est-ce qu'une variable d'environnement ?
Une variable d’environnement est comme un "post-it" que le système utilise pour stocker
des informations importantes qui peuvent être utilisées par le Shell, les scripts, et les
programmes.
Ces variables contiennent des valeurs liées à :
• Le nom de l'utilisateur.
• Le chemin vers les fichiers ou dossiers importants.
• La langue utilisée.
• Les paramètres du système.
C'est un moyen simple pour le système et les logiciels de partager des informations.
Maîtriser la Programmation Shell
Pour afficher toutes les variables disponibles, tapez dans un terminal :
Variable Description Exemple de valeur
PATH Chemins où chercher les programmes exécutables. /usr/bin:/bin:/usr/local/bin
HOME Répertoire personnel de l’utilisateur. /home/bilal
USER Nom de l’utilisateur connecté. mouhssinerabouze
SHELL Shell par défaut utilisé par l’utilisateur. /bin/bash
LANG Langue et encodage utilisés. fr_FR.UTF-8
Maîtriser la Programmation Shell
Structure de base d'un script : le Shebang (#!/bin/bash)
Qu’est-ce que le Shebang ?
Le shebang est une ligne spéciale située au tout début d’un script qui indique au système
quel interpréteur utiliser pour exécuter le script.
Syntaxe :
#!/chemin/vers/interpreteur
Exemple :
Cela indique que le script doit être exécuté avec l’interpréteur Bash, situé à /bin/bash.
Maîtriser la Programmation Shell
Structure de base d'un script : le Shebang (#!/bin/bash)
Pourquoi est-il important ?
• Le shebang garantit que le script sera exécuté correctement, quel que soit le shell par
défaut de l’utilisateur (Bash, Zsh, etc.).
• Sans le shebang, le système pourrait mal interpréter les commandes du script.
Maîtriser la Programmation Shell
Créer, éditer et exécuter un script
1. Créer un script :
Un script est simplement un fichier texte contenant des commandes Shell. Pour le créer :
• Utilisez un éditeur de texte comme nano, vim, ou gedit.
2. Éditer le contenu :
Dans l’éditeur, commencez par ajouter le shebang et quelques commandes simples :
#!/bin/bash
echo "Bonjour CMC Beni mellal"
Maîtriser la Programmation Shell
Créer, éditer et exécuter un script
3. Rendre le script exécutable :
Une fois créé, le script doit être rendu exécutable :
chmod +x mon_script.sh
4. Exécuter le script :
Pour exécuter le script, utilisez son chemin :
./mon_script.sh ou bash mon_script.sh
Maîtriser la Programmation Shell
Premières commandes dans un script
1. echo : Afficher un message
La commande echo est utilisée pour afficher du texte ou des messages.
Exemple :
#!/bin/bash
echo "Bienvenue dans ce script !"
echo "Aujourd'hui, nous apprenons Bash."
2. read : Lire une entrée utilisateur
La commande read permet de demander à l’utilisateur de saisir une valeur qui sera
stockée dans une variable.
Maîtriser la Programmation Shell
Premières commandes dans un script
Exemple d’un Script
SHELL
#!/bin/bash
# liste
echo "Contenu du répertoire courant"
ls -l
echo " "
Exemple d’un Script
SHELL
#!/bin/bash
MSG1="Bonjour "
MSG2="le monde"
MSG3="tout "
echo "$MSG1 $MSG3 $MSG2"
Bonjour tout le monde
Maîtriser la Programmation Shell
Premières commandes dans un script
Exemple :
#!/bin/bash
echo "Quel est votre nom ?"
read nom
echo "Bonjour, $nom !"
Explication :
- read nom : Attend que l’utilisateur saisisse une valeur, qui sera stockée dans la variable
nom.
- $nom : Référence la valeur saisie.
Maîtriser la Programmation Shell
Premières commandes dans un script
Exercice :
Ecrire un script appelé script1 qui demande votre nom et prénom et affiche bonjour
votre_nom votre_prenom.
#!/bin/bash
echo "Entrez votre nom :" #!/bin/bash
read nom read -p "Veuillez entrer votre nom : " nom
echo "Entrez votre prénom :" read -p "Veuillez entrer votre prénom : " prenom
read prenom echo "Bonjour $nom $prenom"
echo "Bonjour $nom $prenom"
Maîtriser la Programmation Shell
Résumé de la structure de base :
Élément Description Exemple
Définit l’interpréteur à utiliser pour
Shebang #!/bin/bash
exécuter le script.
Écrire un fichier texte contenant des
Création nano [Link]
commandes.
Rendre le script exécutable, puis chmod +x [Link] &&
Execution
l’exécuter. ./[Link]
echo pour afficher, read pour lire une
Commandes clés echo "Bonjour" ou read nom
entrée utilisateur.
Maîtriser la Programmation Shell
Variables prédéfinies pour le passage de paramètres :
Les variables prédéfinies en Bash permettent de gérer facilement les paramètres passés à
un script lors de son exécution. Elles servent à :
• Accéder aux paramètres positionnels ($1, $2, etc.).
• Connaître le nombre total de paramètres ($#).
• Manipuler tous les paramètres ($@, $*).
• Identifier le nom du script ($0) ou le résultat des commandes ($?).
Ces variables rendent les scripts plus dynamiques et flexibles, facilitant leur
personnalisation en fonction des besoins utilisateur.
Maîtriser la Programmation Shell
Variables prédéfinies pour le passage de paramètres :
Variable Description Exemple de sortie
2 (si le script est appelé avec ./[Link]
$# Nombre total de paramètres passés au script.
param1 param2)
$@
Tous les paramètres, traités comme une liste param1 param2
(chaque paramètre séparément).
$*
Tous les paramètres, traités comme une chaîne param1 param2
unique.
$0 Nom ou chemin du script appelé. ./[Link]
$1, $2, ... Paramètres positionnels (1er, 2e, etc.). $1 = param1, $2 = param2
$? Code de retour de la dernière commande exécutée. 0 (succès) ou autre (erreur).
$$ PID (Process ID) du script en cours. 12345
$! PID du dernier processus exécuté en arrière-plan. 67890
Maîtriser la Programmation Shell
Variables prédéfinies pour le passage de paramètres :
Exemple :
#!/bin/bash
echo "Le nom du script est : $0"
echo "Le premier argument est : $1"
echo "Le deuxième argument est : $2"
echo "Le nombre total d'arguments est : $#"
echo "Tous les arguments sous forme d'une seule chaîne : $*"
echo "Tous les arguments, chacun dans une chaîne séparée : $@
Si vous exécutez ce script avec la commande suivante :
$ ./mon_script.sh argument1 argument2
Maîtriser la Programmation Shell
Variables prédéfinies pour le passage de paramètres :
La sortie sera :
Le nom du script est : ./mon_script.sh
Le premier argument est : argument1
Le deuxième argument est : argument2
Le nombre total d'arguments est : 2
Tous les arguments sous forme d'une seule chaîne : argument1 argument2
Tous les arguments, chacun dans une chaîne séparée : argument1 argument2
Maîtriser la Programmation Shell
Variables prédéfinies pour le passage de paramètres :
Exemple :
Maîtriser la Programmation Shell
Variables prédéfinies pour le passage de paramètres :
Exécution et Sortie :
Maîtriser la Programmation Shell
Les opérateurs arithmétiques en Bash
Bash permet d'effectuer des opérations arithmétiques simples en utilisant divers
opérateurs. Ces opérations se font principalement avec la syntaxe $((...)), qui évalue les
expressions arithmétiques.
Opérateur Description Exemple Résultat
+ Addition $((5 + 3)) 8
- Soustraction $((5 - 3)) 2
* Multiplication $((5 * 3)) 15
/ Division entière (sans reste) $((5 / 2)) 2
% Modulo (reste de la division) $((5 % 2)) 1
** Exponentiation $((2 ** 3)) 8
Maîtriser la Programmation Shell
Les opérateurs arithmétiques en Bash
Exemple :
#!/bin/bash
read -p "Entrez la valeur de a : " a
read -p "Entrez la valeur de b : " b
echo "Addition : $((a + b))"
echo "Multiplication : $((a * b))"
echo "Division entière : $((a / b))"
echo "Modulo : $((a % b))"
Maîtriser la Programmation Shell
Les opérateurs Logiques
Les opérateurs logiques en Bash permettent de combiner des conditions pour prendre des
décisions plus complexes dans vos scripts. Ils sont essentiels pour créer des structures
conditionnelles comme les if, les elif et les else.
Opérateur Description Exemple
-eq Égal à (nombres) if [ $a -eq $b ]
-ne Différent de (nombres) if [ $a -ne $b ]
-lt Inférieur à (nombres) if [ $a -lt $b ]
-le Inférieur ou égal à (nombres) if [ $a -le $b ]
-gt Supérieur à (nombres) if [ $a -gt $b ]
-ge Supérieur ou égal à (nombres) if [ $a -ge $b ]
= Égal à (chaînes de caractères) if [ "$a" = "$b" ]
!= Différent de (chaînes de caractères) if [ "$a" != "$b" ]
-z Chaîne vide if [ -z "$a" ]
-n Chaîne non vide if [ -n "$a" ]
Maîtriser la Programmation Shell
Les opérateurs Logiques
Les opérateurs logiques en Bash permettent de combiner des conditions pour prendre des
décisions plus complexes dans vos scripts. Ils sont essentiels pour créer des structures
conditionnelles comme les if, les elif et les else.
Opérateur Description Exemple
-eq Égal à (nombres) if [ $a -eq $b ]
-ne Différent de (nombres) if [ $a -ne $b ]
-lt Inférieur à (nombres) if [ $a -lt $b ]
-le Inférieur ou égal à (nombres) if [ $a -le $b ]
-gt Supérieur à (nombres) if [ $a -gt $b ]
-ge Supérieur ou égal à (nombres) if [ $a -ge $b ]
= Égal à (chaînes de caractères) if [ "$a" = "$b" ]
!= Différent de (chaînes de caractères) if [ "$a" != "$b" ]
-z Chaîne vide if [ -z "$a" ]
-n Chaîne non vide if [ -n "$a" ]
Maîtriser la Programmation Shell
Les opérateurs Logiques :
Exemple :
if [ $a -eq $b ]; then
echo "Les nombres sont égaux."
fi
Exemple :
if [ $a -ne $b ]; then
echo "Les nombres sont différents."
fi
Exemple :
if [ $a -lt $b ]; then
echo "$a est inférieur à $b."
fi
Maîtriser la Programmation Shell
Les opérateurs Logiques :
Exemple :
if [ $a -ge $b ]; then
echo "$a est supérieur ou égal à $b."
fi
Exemple :
if [ "$a" != "$b" ]; then
echo "Les chaînes sont différentes."
fi
Maîtriser la Programmation Shell
La structure de contrôle if en Bash
La structure de contrôle if en Bash permet d'exécuter une ou plusieurs commandes en
fonction d'une condition. Si la condition est vraie, les commandes à l'intérieur du bloc if
sont exécutées, sinon elles sont ignorées :
Syntaxe :
if [ condition ]; then
# commandes si la condition est vraie
fi
Explication :
[ condition ] : Le test conditionnel. Cela peut être une comparaison numérique, de chaîne,
ou l'existence d'un fichier.
then : Indique que si la condition est vraie, les commandes qui suivent seront exécutées.
fi : Ferme la structure if (l'inverse de if en Bash).
Maîtriser la Programmation Shell
La structure de contrôle if en Bash
Exemple :
#!/bin/bash
a=10
b=5
if [ $a -gt $b ]; then
echo "$a est plus grand que $b"
fi
Dans cet exemple, la condition vérifie si la valeur de a est supérieure à celle de b. Si c'est
vrai, le message "10 est plus grand que 5" sera affiché.
Maîtriser la Programmation Shell
La structure de contrôle if avec else en Bash
L'instruction else permet d'exécuter un autre bloc de commandes si la condition est
fausse.
Syntaxe :
if [ condition ]; then
# commandes si la condition est vraie
else
# commandes si la condition est fausse
fi
Maîtriser la Programmation Shell
La structure de contrôle if avec else en Bash
Exemple :
#!/bin/bash
a=3
b=5
if [ $a -gt $b ]; then
echo "$a est plus grand que $b“
else
echo "$a n'est pas plus grand que $b"
fi
Dans cet exemple, comme a n'est pas plus grand que b, la commande dans le bloc else
sera exécutée, et le message "3 n'est pas plus grand que 5" sera affiché.
Maîtriser la Programmation Shell
La structure de contrôle if avec elif (else if) en Bash
Si vous avez plusieurs conditions à tester, vous pouvez utiliser elif (une combinaison de
else et if). Cela permet de tester une condition alternative si la première condition est
fausse.
Syntaxe :
if [ condition ]; then
# commandes si condition 1 est vraie
elif
# commandes si condition 2 est vraie
else
# commandes si aucune des conditions n'est vraie
fi
Maîtriser la Programmation Shell
La structure de contrôle if avec elif (else if) en Bash
#!/bin/bash
a=7
b=5
if [ $a -gt $b ]; then
echo "$a est plus grand que $b“
elif [ $a -eq $b ]; then
echo "$a est égal à $b"
else
echo "$a est plus petit que $b"
fi
Dans cet exemple, comme a est plus grand que b, le message " 7 est plus grand que 5 "
sera affiché. Si la première condition avait échoué et que a était égal à b, le bloc elif aurait
été exécuté.
Maîtriser la Programmation Shell
La structure de contrôle if en Bash
Structure Description
if [ condition ]; then Exécute les commandes si la condition est vraie.
Exécute un autre bloc de commandes si la condition est
else fausse.
elif [ condition ]; then Teste une autre condition si la première est fausse.
fi Clôture la structure if.
La structure de contrôle if est essentielle en Bash pour prendre des décisions dans les
scripts. En combinant les tests de conditions avec les blocs if, else, et elif, vous pouvez
contrôler l'exécution de votre script en fonction de différentes situations. C'est une base
importante pour l'automatisation et la gestion des erreurs dans vos scripts.
Maîtriser la Programmation Shell
Exercices:
Exercice 1:
Écrire un script Bash qui prend deux arguments et affiche la comparaison entre eux (qu'ils
soient égaux, le premier soit plus grand ou plus petit que le second) :
Exercice 2:
Écrire un script Bash qui demande le nom de l'utilisateur, puis lui propose une liste de
mots de passe parmi lesquels il doit deviner le bon mot de passe
Exercice 3:
Écrire un script Bash qui demande à l'utilisateur de saisir un nombre. Le script doit
ensuite déterminer si le nombre saisi est pair ou impair, et afficher un message
correspondant.
Maîtriser la Programmation Shell
Correction :
Exercice 1 :
Maîtriser la Programmation Shell
Correction :
Exercice 2 :
Maîtriser la Programmation Shell
Correction :
Exercice 3 :
Maîtriser la Programmation Shell
Les boucles en Bash : répéter des actions while
Les boucles en Bash sont des structures de contrôle qui permettent d'exécuter un bloc
d'instructions de manière répétée tant qu'une certaine condition est vérifiée. Elles sont
essentielles pour automatiser des tâches répétitives et créer des scripts plus dynamiques.
Les différents types de boucles en Bash :
1. La boucle while
Répète un bloc d'instructions tant qu'une condition est vraie.
while [ condition ]
do
# Commandes
done
Maîtriser la Programmation Shell
Les boucles en Bash : répéter des actions while
Exemple 1 : Afficher des nombres tant qu'ils sont inférieurs ou égaux à 5.
Exemple 2 : Afficher les nombres de 1 à 10 :
Maîtriser la Programmation Shell
Les boucles en Bash : répéter des actions while true
1. La boucle while true
La boucle while true est une structure courante en Bash et dans d'autres langages de
programmation. Elle crée une boucle infinie, car la condition true est toujours vérifiée
comme vraie.
Syntaxe de base :
while true ; do
# Instructions répétées
# Sort de la boucle
break
done
Maîtriser la Programmation Shell
Les boucles en Bash : répéter des actions while true
Exemple 1 : Affiche un compteur qui augmente indéfiniment :
Maîtriser la Programmation Shell
Les boucles en Bash : répéter des actions while true
Exemple 2 :
Maîtriser la Programmation Shell
Exercices:
Exercice 1:
Écrivez un script Bash qui demande à l'utilisateur de saisir un nombre entier positif. Le
script doit afficher tous les nombres de 1 jusqu'à ce nombre en utilisant une boucle while.
Exercice 2:
Écrivez un script qui demande à l'utilisateur de saisir un nombre. Affichez la table de
multiplication de ce nombre (par exemple, de 1 à 10) en utilisant une boucle while.
Exercice 3:
Écrivez un script qui génère un nombre aléatoire entre 1 et 100. L'utilisateur doit deviner
le nombre en saisissant des valeurs. Donnez des indices ("Trop grand" ou "Trop petit")
jusqu'à ce que le bon nombre soit trouvé.
Maîtriser la Programmation Shell
Correction :
Exercice 1 :
Maîtriser la Programmation Shell
Correction :
Exercice 2 :
Maîtriser la Programmation Shell
Correction :
Exercice 3 :
Maîtriser la Programmation Shell
Les boucles en Bash : répéter des actions FOR
1. La boucle FOR
La boucle for en Bash permet de parcourir une séquence d'éléments (une liste de mots,
une plage de nombres, les fichiers d'un répertoire, etc.) et d'exécuter un bloc de code pour
chaque élément, ce qui facilite l'automatisation de tâches répétitives.
Syntaxe de base:
for variable in liste_d'éléments
do
# Instructions à exécuter pour chaque élément
done
Maîtriser la Programmation Shell
Les boucles en Bash : répéter des actions FOR
Exemple 1: Parcourir une liste de mots fruit
Résultat :
Maîtriser la Programmation Shell
Les boucles en Bash : répéter des actions FOR
Exemple 2: une plage de nombres (boucle C-style) :
Résultat :
Maîtriser la Programmation Shell
Les boucles en Bash : répéter des actions FOR
Exemple : les fichiers d'un répertoire
Résultat :
Maîtriser la Programmation Shell
Exercices:
Exercice 1:
Écrivez un script Bash qui permet d’afficher le nombre et les fichiers dans le répertoire
actuel. (if [ -f "$file" ] vérifier si un fichier spécifié existe et est un type de fichier )
Exercice 2:
Écrivez un script qui demande à l'utilisateur de saisir un nombre entier positif N et qui
calcule la somme des nombres de 1 à N en utilisant une boucle for.
Exercice 3:
Écrivez un script qui demande à l'utilisateur de saisir un nombre n, puis crée n fichiers
nommés [Link], [Link], ..., [Link].
Maîtriser la Programmation Shell
Correction :
Exercice 1 :
Maîtriser la Programmation Shell
Correction :
Exercice 2 :
Maîtriser la Programmation Shell
Correction :
Exercice 3 :