Objectifs
- Comprendre ce qu’est un shell et son rôle dans un environnement DevOps.
- Utiliser les commandes de base pour naviguer et manipuler des fichiers.
- Écrire, rendre exécutable et lancer un premier script shell simple.
- Connaître les premières bonnes pratiques pour des scripts robustes.
Le Shell, outil central du DevOps
En DevOps, l’automatisation est reine. Le shell est le langage qui permet de “parler” directement au système d’exploitation pour automatiser des tâches. Bash (Bourne-Again SHell) est le shell le plus répandu, ce qui en fait une compétence fondamentale. Vous l’utiliserez partout : dans les pipelines CI/CD, sur les serveurs, dans les conteneurs Docker, etc.
Commandes essentielles à connaître
Voici une sélection des commandes que vous utiliserez tous les jours.
- Navigation
pwd: Affiche le répertoire courant (Print Working Directory).ls -la: Liste tous les fichiers (-a) avec des détails (-l).cd <dossier>: Change de répertoire (Change Directory).cd ..pour remonter,cd ~pour aller à votre dossier personnel.
- Manipulation de fichiers/dossiers
mkdir <nom>: Crée un dossier (Make Directory).touch <fichier>: Crée un fichier vide.cp <source> <dest>: Copie.mv <source> <dest>: Déplace ou renomme.rm <fichier>: Supprime un fichier.rm -r <dossier>pour un dossier.
- Visualisation
cat <fichier>: Affiche le contenu entier d’un fichier.less <fichier>: Affiche le contenu page par page (plus sûr pour les gros fichiers).head / tail <fichier>: Affiche les premières/dernières lignes.
- Recherche
grep <motif> <fichier>: Cherche un motif dans un fichier.find <dossier> -name <nom>: Cherche des fichiers.
Écrire un script minimal
Un script est un simple fichier texte contenant une suite de commandes.
Fichier mon_script.sh :
#!/usr/bin/env bash
# La ligne ci-dessus (le "shebang") indique que ce script doit être exécuté avec Bash.
# Active le mode strict pour plus de sécurité.
set -euo pipefail
# Affiche un message de bienvenue à l'utilisateur actuel
echo "Bonjour, $USER !"
# Affiche la date et l'heure
echo "Nous sommes le :"
date
Rendre le script exécutable et le lancer :
# Ajoute la permission d'exécution
chmod +x mon_script.sh
# Exécute le script
./mon_script.sh
Bonnes pratiques dès le départ
- Le mode strict : Commencez toujours vos scripts par
set -euo pipefail. Cela vous protège contre de nombreuses erreurs courantes (commandes qui échouent silencieusement, variables non définies). - Citer les variables : Lorsque vous utilisez une variable, mettez-la systématiquement entre guillemets doubles (
"$MA_VAR"). Cela évite les bugs si la variable contient des espaces ou des caractères spéciaux. - Tester en local : Avant d’intégrer un script dans une automatisation plus large (un pipeline CI/CD, une tâche
cron), assurez-vous qu’il fonctionne comme prévu en l’exécutant sur votre machine.
Pièges courants
- Les espaces comptent :
MA_VAR="valeur"est correct.MA_VAR = "valeur"est une erreur. rmest irréversible : Faites particulièrement attention avecrm, surtout en combinaison avec des jokers (*). Une commanderm -rf *dans le mauvais dossier peut être catastrophique.- Chemins relatifs vs absolus : Un script automatisé (
cron) ne s’exécute pas forcément depuis le dossier où il se trouve. Privilégiez les chemins absolus (/home/user/script.sh) pour plus de fiabilité.
Exercices
-
Manipulation de l’environnement :
- Créez un dossier
devops_sandbox. - À l’intérieur, créez un fichier
NOTES.mdet un sous-dossierscripts. - Déplacez
NOTES.mddans le dossierscripts. - Listez le contenu de
devops_sandboxpour vérifier.
- Créez un dossier
-
Votre premier script d’info :
- Créez un script
info.shqui affiche les informations suivantes :- Votre nom d’utilisateur.
- Le chemin de votre répertoire personnel.
- La quantité d’espace disque utilisé sur votre système (
df -h).
- Rendez-le exécutable et lancez-le.
- Créez un script
-
Script avec argument :
- Créez un script
creer_backup.shqui prend un nom de fichier en argument. - Le script doit copier ce fichier dans un dossier
~/backups(qu’il créera s’il n’existe pas). - Affichez un message de succès à la fin.
- Créez un script