Pour ce TP on va utiliser Monia , a installer sur vos postes
- Le Bash shell permet d’interagir directement avec le système Linux, en exécutant rapidement des commandes pour gérer fichiers, dossiers et processus.
- Il offre une grande efficacité : une seule ligne de commande peut remplacer plusieurs actions que l’on ferait manuellement via une interface graphique.
- Grâce aux scripts Bash, on peut automatiser des tâches répétitives (sauvegardes, déploiements, surveillance système), ce qui fait gagner du temps et réduit les erreurs humaines.
- C’est un outil puissant et flexible qui donne un contrôle total sur le système, indispensable pour l’administration, le développement et le dépannage.
- Apprendre Bash est aussi une compétence universelle, car il est présent sur la plupart des systèmes Unix/Linux et même disponible sous Windows.
Prérequis:
- Les variables en shell bash
- Utilisation de l’interpréteur bash et le cours script shell
- vi / vim
- Monia base algorithme , organigrammes et Pseudo Langage
But:
- apprendre à coder , utiliser la puissance d’une machine, qui ne se lasse pas de répéter !
- Réfléchir pour créer des codes structurés
- savoir réaliser des petits scripts pour faciliter l’administration système .
Répertoire du travail:
~/Works/TP0_SHELL BASH
Présentation de TP0_SHELL BASH
Rappelons que Bash interprète et exécute les commandes de manière interactive, ligne après ligne, en temps réel.
etudiant@ordi:~/Works/TP0_BASH$ echo "Bonjour le monde !"
Bonjour le monde !
etudiant@ordi:~/Works/TP0_BASH$ echo "entrer votre nom :"
entrer votre nom :
etudiant@ordi:~/Works/TP0_BASH$ read nom
caroline
etudiant@ordi:~/Works/TP0_BASH$ echo "Bonjour $nom"
Bonjour caroline
etudiant@ordi:~/Works/TP0_BASH$
nous allons faire du « shell scripting »
Le shell scripting est un langage de scriptage orienté système, utilisé pour coder des enchaînements de commandes, automatisant des processus et améliorant la productivité du développeur.
le cours est ici shell bash et Script shell bash
Bonjour le monde
Répertoire:bonjour, Code : bonjour.sh
A l’aide vi réaliser le fichier bonjour.sh
#!/bin/bash
echo "Bonjour le monde ! "
A quoi sert la première ligne
#!/bin/bash
Exécuter à l’aide de bash le code bonjour.sh
Rendre le code bonjour.sh exécutable
Donner le résultat de ce code
Avec Monia donner l’organigramme et le Pseudo langage de bonjour
Alternative Si (IF)
répertoire : age , code : age.sh
#!/bin/bash
echo -n "votre age :"
read age
if [ $age -ge 18 ]
then
echo "Vous êtes majeur"
else
echo "vous n'êtes pas majeur , demander à vos parents !"
fi
Rendre le code exécutable
Avec la commande man , trouver ce que fait -n pour echo
Expliquer le test [ $age -ge 18 ]
Ecrire un code , script shell bash
répertoire :code_0, code : code_0.sh
Ecrire un code code_0.sh qui va écrire un fichier bonjour.txt contenant bonjour le monde si il n’existe pas, sans poser de question , si il existe on ne fait rien
Solution code_0.sh
#!/bin/bash
# on passe en parametre le nom du fichier
# ./code.sh bonjour.txt # par exemple
if [ $# -ne 1 ]
then
echo "il me faut un argument svp "
echo " syntaxe : ./code0.sh fichier "
exit
fi
if [ -e $1 ]
then
echo "le fichier $1 existe déja !"
else
echo "le fichier $1 n'existe pas ! mais je le fait "
echo "Bonjour le monde ! " > $1 # on crée le fichier
fi
FOR (POUR) liste
Répertoire : for , code for_x.sh
for variable in liste_valeurs
do
commandes
done
exemple de code for_1.sh:
#!/bin/bash
# FOR 1
for fruit in pomme banane orange
do
echo "J'aime les $fruit"
done
Tester le code for_1.sh
relever la liste
Avec Monia , donner l’oganigramme et le PL de FOR 1
exemple de code for_2.sh:
Tester le code for_2.sh
#!/bin/bash
# FOR 2
for nom in {"Dorian","Arthur","Paul","Armand"}
do
echo $nom
done
Tester le code for_2.sh
Avec Monia , donner l’organigramme et le PL de FOR 2
exemple de code for_3.sh:
Tester le code for_3.sh syntaxe d’intervalle
#!/bin/bash
# FOR 3
for i in {1..5} # Syntaxe d'intervalle
do
echo "Numéro: $i"
done
Expliquer l’intervalle:
Avec Monia , donner l’oganigramme et le PL de FOR 3
exemple de code for_4.sh:
Tester le code for_4.sh syntaxe d’intervalle et pas
#!/bin/bash
# FOR 4
for i in {0..10..2} # De 0 à 10 par pas de 2
do
echo "$i"
done
Expliquer l’intervalle et pas :
exemple de code for_5.sh:
Tester le code for_5.sh
#!/bin/bash
# FOR 5
for i in `seq 1 10`;
do
echo $i
done;
Regarder et expliquer avec man seq
Tester for_6.sh (executer ls pour faire une liste)
#!/bin/bash
# FOR 6
for fichier in `ls`
do
echo "Fichier trouvé : $fichier"
done
Tester for_7.sh
#!/bin/bash
# FOR 7
for (( count=10; count>0; count-- ))
do
echo -n "$count "
done
comme en C!
Tant que (until)
répertoire: moyenne , code : moyenne.sh
#!/bin/bash
# Tant que (until)
note=0
moyenne=0
i=0
until [ "$note" -lt 0 ];
do
echo "Entrez votre note (q pour quitter) :"
read -r note
if [ "$note" = "q" ]; then
note=-1
echo "au revoir !"
elif [ "$note" -ge 16 ]; then
echo "très bien"
elif [ "$note" -ge 14 ]; then
echo "bien"
elif [ "$note" -ge 12 ]; then
echo "assez bien"
elif [ "$note" -ge 10 ]; then
echo "moyen"
elif [ "$note" -ge 0 ]; then
echo "insuffisant"
else
echo "au revoir !"
fi
if [ "$note" -ge 0 ]; then
let moyenne=$moyenne+$note
let i=$i+1
fi
done
if [ "$i" -le 0 ]; then
let i=1
fi
let moyenne=$moyenne/$i
echo "La moyenne est de $moyenne ($i notes)"
Tester ce code
Donner l’organigramme et le PL
Les cas (case)
répertoire: lescas , code : lescas.sh
lescas.sh:
#!/bin/bash
# programme exemple lescas.sh
case $# in
0) echo "aucun parametre"
echo "Syntaxe : $0 <nom d'utilisateur>";;
1) echo "1 parametre passe au programme : $1";;
2) echo "2 parametres passes au programme : $1 et $2";;
*) echo "TROP DE PARAMETRES !"
esac
Tester ce code
Donner l’organigramme et le PL
Fonction en Shell BASH
répertoire: fonction , code : fonction.sh
#!/bin/bash
# ma fonction !
function afficher
{
echo "Bonjour le monde"
}
#programme principal
afficher # afficher 3 fois!
afficher
afficher
Tester ce code
Donner les organigrammes et les PL
Fonction addition (passage de paramètres)
répertoire: addition, code:addition.sh
#!/bin/bash
# fonction addition avec passage
function addition
{
local a=$1
local b=$2
local somme=$((a+b))
return $somme
}
# programme principal
addition 5 15
echo $? #affiche la somme (envoyé par le return)

