Informatique

Bash : un incontournable pour gérer des serveurs comme un expert

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 pipefail pour 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 fichier
  • 2> : 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 debug
  • set -euo pipefail : mode strict
  • trap pour 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

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.

Samuel

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.

Voir tous les articles

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *