Souvent redouté, le scripting Bash est pourtant l’un des outils les plus puissants pour automatiser vos tâches sous Linux. De la simple commande à l’écriture de fonctions complexes, ce guide exhaustif vous accompagne pas à pas pour maîtriser Bash, avec des explications claires, des exemples de code à copier-coller et les meilleures pratiques à adopter. Que vous soyez administrateur système, développeur, ou ingénieur DevOps, vous y trouverez les clés pour écrire des scripts robustes, maintenables et sécurisés.
Bash : un shell devenu essentiel sur Linux
Bash (Bourne Again Shell) est l’interpréteur de commandes par défaut de la plupart des distributions GNU/Linux. Il est basé sur le shell originel Bourne (sh), tout en y ajoutant des fonctionnalités inspirées de ksh et csh : autocomplétion, édition de ligne de commande, gestion de l’historique, tableaux, arithmétique, fonctions, expressions conditionnelles avancées, etc.
Véritable pilier de l’administration système, Bash est présent sur toutes les plateformes Linux, sur macOS (remplacé par zsh depuis Catalina, mais toujours disponible), sur WSL, et peut être installé sur Windows via Git Bash ou Cygwin. Cela en fait un outil universel, portable et minimaliste, idéal pour l’écriture de scripts multiplateformes.
Pour connaître les shells disponibles sur votre système :
cat /etc/shells
Exemple :
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
Pourquoi apprendre le scripting Bash ?
Dans un monde où l’automatisation est devenue une compétence clé, le scripting Bash est une arme redoutable pour être plus efficace, plus précis et plus autonome.
Bash permet notamment de :
- Créer des scripts d’installation ou de déploiement
- Gérer des sauvegardes automatiques
- Nettoyer des fichiers de logs ou temporaires
- Surveiller des processus ou des services
- Réagir à des événements avec
cron,inotify,systemd
Pourquoi ne pas utiliser Python ou PowerShell ? Bash est léger, préinstallé, natif et spécialisé dans l’interaction avec le noyau Linux, les processus, les répertoires, les fichiers et les droits d’accès.
Anatomie d’un script Bash : explication technique
Tout script Bash commence par une déclaration d’interpréteur, appelée shebang :
#!/bin/bash
Cette ligne permet au noyau de savoir quel programme doit être utilisé pour interpréter le contenu. C’est une bonne pratique indispensable.
Exemple de script minimaliste et commenté :
#!/bin/bash
nom="Utilisateur"
if [ "$nom" != "" ]; then
echo "Bonjour, $nom !"
else
echo "Aucun nom défini."
fi
Bonnes pratiques :
- Toujours commenter vos scripts avec
# - Utiliser
set -euo pipefailpour gérer les erreurs - Toujours utiliser les guillemets doubles autour des variables :
"$maVar"
Variables : dynamiques, globales, locales
Les variables Bash sont dynamiques et non typées. Elles sont globales par défaut.
Exemple simple :
prenom="Alice"
echo "Bonjour $prenom"
Lecture utilisateur :
read -p "Entrez votre nom : " nom
echo "Bienvenue, $nom"
Variable locale :
maFonction() {
local chemin="/tmp"
echo $chemin
}
Variables système intéressantes :
$USER: nom de l’utilisateur$PWD: dossier courant$HOME: répertoire personnel$RANDOM: nombre aléatoire$?: code de retour de la dernière commande
Fonctions Bash : moduler et réutiliser
Une fonction dans Bash est un bloc réutilisable, pouvant accepter des paramètres, retourner une valeur ou exécuter une séquence conditionnelle.
Syntaxe :
maFonction() {
echo "Fonction exécutée"
}
maFonction
Avec paramètres :
bonjour() {
echo "Bonjour $1"
}
bonjour "Alice"
Valeur de retour :
addition() {
echo $(($1 + $2))
}
resultat=$(addition 3 7)
echo "Total : $resultat"
Exemple création dossier :
creerEtEntrer() {
mkdir -p "$1"
cd "$1"
}
creerEtEntrer monDossier
Les structures de contrôle : if, case, tests
Condition if
if [ $age -ge 18 ]; then
echo "Majeur"
else
echo "Mineur"
fi
Condition case
read -p "Choix (a/b/c) : " choix
case $choix in
a) echo "Option A" ;;
b) echo "Option B" ;;
c) echo "Option C" ;;
*) echo "Option inconnue" ;;
esac
Astuce : utiliser [[ ... ]] pour les tests complexes, avec && et || pour la logique booléenne.
Les boucles en Bash : for, while, until
Boucle for classique
for i in {1..5}; do
echo "Iteration $i"
done
Boucle while
count=1
while [ $count -le 3 ]; do
echo "Compteur : $count"
((count++))
done
Boucle until (jusqu’à condition)
until [ -f /tmp/fichier.attendu ]; do
echo "En attente..."
sleep 1
done
Tableaux et itération
fruits=(pomme banane orange)
for fruit in "${fruits[@]}"; do
echo "$fruit"
done
Accès direct : ${fruits[1]} → “banane”
Redirections, pipes, opérateurs logiques
Redirections :
>: écrase un fichier>>: ajoute à un fichier2>: redirige les erreurs&>: redirige stdout + stderr
commande > sortie.txt 2> erreur.log
Pipes | :
du -sh * | sort -h
Logique :
[ -f fichier.txt ] && echo "Fichier trouvé" || echo "Absent"
Expressions régulières
email="exemple@mail.com"
if [[ $email =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ ]]; then
echo "Email valide"
fi
Debug, erreurs et sécurité
bash -x script.sh: mode debugset -euo pipefail: mode stricttrappour capturer signaux :
trap 'echo "Interruption capturée"; exit' INT
- Toujours valider les entrées :
if [[ ! "$1" =~ ^[0-9]+$ ]]; then
echo "Erreur : entrée non numérique"
exit 1
fi
Automatisation avec cron
crontab -e
Exécution tous les jours à 1h :
0 1 * * * /chemin/vers/script.sh
Exemples concrets
Script de sauvegarde :
#!/bin/bash
source=/home/user/docs
dest=/mnt/backup/docs_$(date +%F)
mkdir -p "$dest"
rsync -a --delete "$source/" "$dest/"
echo "Sauvegarde OK"
Nettoyage automatique
find /tmp -type f -mtime +7 -exec rm -f {} \;
echo "Fichiers anciens supprimés"
Ressources recommandées
man bash- tldr.sh
- explainshell.com
- shellcheck.net
Ce qu’il faut retenir
Bash est l’outil système ultime pour automatiser, contrôler et optimiser votre environnement Linux. Il est puissant, fiable, et largement documenté. Maîtrisé, il permet d’éliminer les erreurs humaines, de créer des outils internes réutilisables, et de gagner un temps précieux chaque jour. Il reste une compétence technique essentielle que tout professionnel du système se doit de dominer.

Je m’appelle Samuel Le Goff. À 38 ans, je suis l’actualité du numérique depuis plus de 14 ans. Aujourd’hui, je m’intéresse particulièrement aux smartphones et aux usages concrets de l’intelligence artificielle, que je traite à travers des contenus clairs et accessibles sur Menow.fr.
