Cours 13 - Scripts sous Linux
Table des matières
Objectifs
- Connaître la nomenclature et les expressions des scripts Bash
- Comprendre le fonctionnement des scripts Bash
- Bien utiliser les commandes du shell dans un script Bash
Déroulement
- Introduction
- Un peu de théorie
- Atelier sur les scripts Bash
- Exercice 13 - Comptes utilisateurs
- Travail sur le TP02 si temps
- Conclusion
Un peu de théorie
Liens utiles
À savoir!
- Quelle est la différence entre sh et bash?
- sh : Bourne Shell. L'ancêtre de tous les shells.
- bash : Bourne Again Shell. Une amélioration du Bourne Shell, disponible par défaut sous Linux et Mac OS X.
- Utiliser l'extension de script bash : .bash
- Rendre éxécutable un script: chmod 774 script.bash
- Pourquoi le 774 ?
- Pour éxécuter un script on écrit: ./script.bash
- Pourquoi le ./ ?
- Pour déboguer un script: bash -x script.bash
- Les commentaires se font avec dièze #: # Affichage de la liste des fichiers
- Toujours écrire en haut des scripts bash : #!/usr/bin/bash
- Pourquoi?
- Ce terme s'appelle le Sha-Bang
Quelques commandes intéressantes pour le scripting
- echo
echo "Bonjour $USER" - touch
Crée un fichier vide. - cat
Affiche le contenu des fichiers passés en paramètres. - sleep
Attend le nombre de secondes indiqués avant de continuer le script. - clear
Efface le contenu du terminal. - read NOM
Lit l'entrée standard jusqu'à un "\n" et met son contenu dans la variable $NOM. - bc
Calculatrice simple
echo "(42+(21*2))/2" | bc - grep string
Filtre les lignes contenant la chaîne "string"
echo "Informations sur mon compte :"
cat /etc/passwd | grep $USER - sort
Trie des noms
echo -e "chenille\nmaison\narbre\nbuisson" | sort - seq
Générer une liste incrémentée de nombres:
seq 1 20 - tr string1 string2
Change des caractères (en utilisant des expressions régulières).
echo "JE NE VEUX PAS DE MAJUSCULES" | tr '[A-Z]' '[a-z]' - cut
Sélectionne seulement certaines parties de l'affichage. Fonctionne aussi avec des colonnes.
echo "Liste des comptes utilisateurs :"
cat /etc/passwd | cut -d':' -f1 - head
Affiche les 10 premières lignes seulement d'un fichier texte. (nombre de lignes avec -n)
cat mon_fichier | head -n 3 - tail
Affiche les 10 dernières lignes seulement. (nombre de lignes avec -n)
cat mon_fichier | tail -n 3 - wc
Affiche le nombre de lignes, de mots et de caractères.
echo "Nombre de comptes utilisateurs :"
cat /etc/passwd | wc -l
Pour tout le reste, il y a chatGPT!
Atelier sur les scripts Bash
Outils à utiliser
Faites l'installation de Visual Studio Code
Premiers exemples
Premier programme Bash appelé '''script1.bash''':
#!/bin/bash
echo Mon premier script
echo Liste des fichiers :
ls -la
exit 0
Pour exécuter un script, on change les droits et on tape:
./script1.bash
Deuxième programme Bash appelé '''script2.bash''':
#!/usr/bin/bash
echo "Votre nom est "$1
On exécute comme suit:
./script2.bash Jimmy
Qu'est-ce que je viens d'ajouter à mon script?
Troisième programme Bash appelé '''script3.bash''':
#!/usr/bin/bash
echo -n "Entrez un nom de fichier: "
read file
if [ -e "$file" ]; then
echo "Le fichier existe!"
else
echo "Le fichier n'existe pas, du moins n'est pas dans le répertoire d'exécution du script"
fi
Quatrième programme Bash appelé '''script4.bash'''
#!/usr/bin/bash
echo Programme menu
stop=0
while test $stop -eq 0
do
echo 1 : Affiche la date
echo 2,3 : Affiche le repertoire courant
echo 4 : Fin
echo
echo Votre choix ?
read reply
echo
case $reply in
"1")
date
;;
"2"|"3")
pwd
;;
"4")
stop=1
;;
*)
echo Choix non valide
;;
esac
done