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.
🕒
6 h maximum

Prérequis:

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)

Tester ce code

Donner l’organigramme et le PL