Retour au cours

introduction aux scripts bash

Objectifs

  • Comprendre ce qu’est un script shell et son utilité pour l’automatisation.
  • Écrire la ligne “shebang” (#!/bin/bash) et comprendre son rôle.
  • Rendre un script exécutable avec chmod +x.
  • Utiliser des variables et la commande echo pour créer un script simple.

Qu’est-ce qu’un script Bash ?

Un script est un simple fichier texte qui contient une séquence de commandes, exactement les mêmes que celles que vous tapez dans votre terminal. Au lieu de les taper une par une, vous les écrivez dans un fichier, et le shell les exécute dans l’ordre.

C’est le premier pas vers l’automatisation. Dès que vous vous retrouvez à taper la même série de 3 ou 4 commandes régulièrement, c’est le signe qu’il est temps d’en faire un script.

Anatomie d’un premier script

Un script Bash a quelques éléments caractéristiques.

Fichier mon_script.sh :

#!/usr/bin/env bash

# Ceci est un commentaire. Il est ignoré par le shell.
# On utilise des commentaires pour expliquer le "pourquoi" du code.

# Afficher un message de bienvenue
echo "--- Début de mon premier script ---"

# Définir une variable
UTILISATEUR="Alice"

# Utiliser la variable dans une chaîne de caractères
echo "Bonjour, $UTILISATEUR !"

# Exécuter une autre commande
echo "Le contenu du dossier courant est :"
ls -l

echo "--- Fin du script ---"

Le Shebang : #!/usr/bin/env bash

C’est la toute première ligne de votre script.

  • Elle commence toujours par #!.
  • Elle indique au système d’exploitation quel programme (interpréteur) utiliser pour exécuter ce fichier.
  • #!/bin/bash dit “utilise le programme bash qui se trouve dans /bin”.
  • #!/usr/bin/env bash est souvent préféré : il dit “trouve le programme bash dans l’environnement de l’utilisateur”, ce qui est un peu plus portable. Cette ligne est cruciale.

Rendre le script exécutable et le lancer

1. La permission d’exécution

Par défaut, un nouveau fichier texte que vous créez n’a pas la permission d’être exécuté. Vous devez l’ajouter manuellement avec chmod.

# Ajoute (+) la permission d'exécution (x)
chmod +x mon_script.sh

Vous ne devez faire cette opération qu’une seule fois.

2. L’exécution

Pour lancer le script, vous devez spécifier son chemin. Si vous êtes dans le même dossier que le script, le chemin est ./mon_script.sh.

./mon_script.sh
  • Le ./ est important. Il signifie “dans le dossier courant”. Sans lui, le shell chercherait la commande mon_script.sh dans les dossiers système (/bin, /usr/bin, etc.) et ne la trouverait pas.

Bonnes pratiques dès le début

  • Toujours inclure un shebang en haut de vos scripts.
  • Utilisez l’extension .sh pour vos scripts shell. Ce n’est pas obligatoire pour le système, mais c’est une convention qui aide les humains à identifier le type de fichier.
  • Commentez votre code pour expliquer les parties complexes ou les choix que vous avez faits.
  • Utilisez set -e : Ajoutez set -e juste après le shebang. Cette option demande au script de s’arrêter immédiatement si une commande échoue, ce qui évite des comportements imprévisibles.

Exercices

  1. Votre premier script :

    • Créez un fichier nommé system_info.sh.
    • Ajoutez le shebang.
    • À l’intérieur, ajoutez les commandes pour afficher :
      • Un message ”--- Informations Système ---”.
      • Le nom de votre machine (hostname).
      • La version de votre noyau (uname -r).
    • Rendez le script exécutable et lancez-le.
  2. Script avec variables :

    • Créez un script backup_notice.sh.
    • Définissez une variable BACKUP_DIR avec le chemin /mnt/backups/daily.
    • Définissez une variable DATE_JOUR qui exécute la commande date.
    • Le script doit afficher un message comme : “NOTICE: La sauvegarde du [date] sera stockée dans [dossier]”.
  3. Erreur de permission :

    • Créez un fichier test.sh sans le rendre exécutable.
    • Essayez de le lancer avec ./test.sh. Observez l’erreur “Permission denied”.
    • Corrigez le problème avec chmod.