Guide complet
SCRIPTS
BASH
Automatiser Linux avec bash
"ArrĂȘte de faire Ă  la main ce que ton ordinateur peut faire tout seul." — L'art de l'automatisation Linux.
Automatisation ⭐⭐ IntermĂ©diaire 🚀 Indispensable

Ton premier script

Un script bash, c'est un fichier texte contenant une suite de commandes Linux. Il commence toujours par un shebang qui indique quel interpréteur utiliser.

hello.sh — le script minimal
#!/bin/bash
# Mon premier script bash

echo "Bonjour, $(whoami) !"
echo "Nous sommes le $(date '+%d/%m/%Y')"
echo "Vous ĂȘtes dans : $(pwd)"
Rendre exécutable et lancer
# Rendre exécutable
$ chmod +x hello.sh

# Exécuter
$ ./hello.sh
Bonjour, ubuntu !
Nous sommes le 16/05/2026
Vous ĂȘtes dans : /home/ubuntu

Variables

Les variables stockent des valeurs réutilisables. Pas d'espaces autour du =, et on utilise $ pour lire la valeur.

Déclarer et utiliser des variables
# Déclarer une variable (pas d'espaces !)
NOM="Elvis"
AGE=35
VILLE="Lyon"

# Utiliser avec $
echo "Je m'appelle $NOM, j'ai $AGE ans."

# Capturer la sortie d'une commande
DATE=$(date '+%Y-%m-%d')
HOSTNAME=$(hostname)

# Variables spéciales
# $0 = nom du script
# $1, $2... = arguments passés au script
# $# = nombre d'arguments
# $? = code retour de la derniĂšre commande
# $$ = PID du script en cours

Conditions if/else

Conditions
#!/bin/bash

# Vérifier si un fichier existe
if [ -f "/etc/nginx/nginx.conf" ]; then
  echo "Nginx est installĂ©"
else
  echo "Nginx n'est pas installĂ©"
fi

# Comparer des nombres
ESPACE=$(df / | tail -1 | awk '{print $5}' | tr -d %)
v>
if [ $ESPACE -gt 85 ]; then
  echo "⚠ Disque presque plein : $ESPACE%"
fi

# Opérateurs de comparaison
# -eq (=), -ne (!=), -lt (<), -gt (>), -le (<=), -ge (>=)
# -f (fichier existe), -d (dossier existe), -z (chaĂźne vide)

Boucles

Boucles for et while
# Boucle for sur une liste
for FRUIT in pomme poire banane; do
  echo "J'aime les $FRUIT"
done

# Boucle for sur des fichiers
for FICHIER in *.txt; do
  echo "Traitement de : $FICHIER"
  cp "$FICHIER" backup/
done

# Boucle while
COMPTEUR=0
while [ $COMPTEUR -lt 5 ]; do
  echo "ItĂ©ration $COMPTEUR"
  ((COMPTEUR++))
done

Fonctions

Déclarer et appeler des fonctions
#!/bin/bash

# Déclarer une fonction
saluer() {
  echo "Bonjour, $1 !" # $1 = premier argument
}

# Fonction avec valeur de retour
est_root() {
  if [ $(whoami) = "root" ]; then
    return 0 # succĂšs
  else
    return 1 # Ă©chec
  fi
}

# Appeler les fonctions
saluer "Elvis"
if est_root; then
  echo "Tu es root !"
fi

Script complet — sauvegarde automatique

backup.sh — exemple rĂ©el
#!/bin/bash
# Script de sauvegarde quotidienne

SOURCE="/home/ubuntu/mon-site"
DESTINATION="/backup"
DATE=$(date '+%Y-%m-%d')
LOG="/var/log/backup.log"

# Créer le dossier de destination si nécessaire
mkdir -p "$DESTINATION"

# Faire la sauvegarde
echo "[$DATE] Début sauvegarde..." >> $LOG

if rsync -avz "$SOURCE/" "$DESTINATION/$DATE/" >> $LOG 2>&1; then
  echo "[$DATE] ✅ SuccĂšs" >> $LOG
else
  echo "[$DATE] ❌ Échec !" >> $LOG
  # Envoyer une alerte
  mail -s "Backup failed" admin@monsite.fr <<< "La sauvegarde a Ă©chouĂ©"
fi

# Garder seulement les 7 derniers backups
ls -dt "$DESTINATION/"*/ | tail -n +8 | xargs rm -rf
💡 Automatiser avec cron
Rends le script exécutable (chmod +x backup.sh) puis ajoute-le à cron (crontab -e) : 0 2 * * * /home/ubuntu/backup.sh pour une exécution chaque nuit à 2h.
← Retour
Apprendre
Suivant →
cron