🔝 Retour au Sommaire
Commençons par créer un dossier dédié à nos scripts pour rester organisés :
# Créer un dossier pour nos scripts
mkdir ~/mes_scripts
# Se déplacer dans ce dossier
cd ~/mes_scripts
# Vérifier où nous sommes
pwd💡 Explication : Le symbole ~ représente votre dossier personnel (comme /home/votreusername sur Linux).
Créons notre premier script appelé premier_script.sh :
# Créer un fichier vide
touch premier_script.sh
# Ou bien créer et ouvrir directement avec nano
nano premier_script.shDans votre éditeur, tapez exactement ce code :
#!/bin/bash
# Mon premier script Bash
echo "=== Mon Premier Script Bash ==="
echo "Bonjour ! Je suis un script automatisé."
echo "Aujourd'hui nous sommes le :"
date
echo "Voici quelques informations sur votre système :"
echo "Nom d'utilisateur : $(whoami)"
echo "Répertoire actuel : $(pwd)"
echo "=== Fin du script ==="- Avec nano : Appuyez sur
Ctrl+X, puisYpour confirmer, puisEntrée - Avec vim : Tapez
:wqpuisEntrée - Avec un éditeur graphique : Utilisez
Ctrl+Sou le menu Fichier → Sauvegarder
La première ligne #!/bin/bash s'appelle le shebang (prononcé "chébang").
Analogie : C'est comme l'étiquette sur un pot de confiture qui indique "confiture de fraises". Le shebang dit à l'ordinateur : "Ce fichier contient du code Bash".
#!/bin/bashDécomposition :
#!: Les symboles magiques qui disent "attention, instruction spéciale !"/bin/bash: Le chemin vers le programme qui va interpréter votre script
#!/bin/bash # Version standard (recommandée pour débuter)
#!/usr/bin/env bash # Version portable (fonctionne sur plus de systèmes)
#!/bin/sh # Version basique (moins de fonctionnalités)Pour débuter : Utilisez toujours #!/bin/bash.
Actuellement, votre script ne peut pas être exécuté. Vérifiez :
ls -l premier_script.shVous verrez quelque chose comme :
-rw-r--r-- 1 utilisateur groupe 245 date premier_script.sh
Décryptage des permissions :
rw-: Le propriétaire peut lire (r) et écrire (w), mais pas exécuterr--: Le groupe peut seulement lirer--: Les autres peuvent seulement lire
# Donner les permissions d'exécution
chmod +x premier_script.sh
# Vérifier le changement
ls -l premier_script.shMaintenant vous devriez voir :
-rwxr-xr-x 1 utilisateur groupe 245 date premier_script.sh
Les x indiquent que le fichier est maintenant exécutable !
# Exécuter le script
./premier_script.shPourquoi le ./ ?
.représente le répertoire actuel/sépare le répertoire du nom du fichier- Ensemble,
./dit "cherche le fichier dans le répertoire actuel"
Pourquoi ne pas simplement taper premier_script.sh ?
Quand vous tapez une commande sans chemin (comme ls ou date), le système la cherche uniquement dans les dossiers listés dans la variable PATH. Par sécurité, le répertoire courant n'y figure pas. Le ./ indique explicitement "c'est ici" :
# Exécuter en passant le fichier à bash
bash premier_script.shAvantage : Pas besoin de permissions d'exécution
Inconvénient : Plus long à taper
Si vous voulez exécuter votre script depuis n'importe quel répertoire :
# Exécuter avec le chemin complet
~/mes_scripts/premier_script.sh
# Ou bien
bash ~/mes_scripts/premier_script.shVotre script devrait afficher quelque chose comme :
=== Mon Premier Script Bash ===
Bonjour ! Je suis un script automatisé.
Aujourd'hui nous sommes le :
dim. 13 juil. 2025 14:30:25 CEST
Voici quelques informations sur votre système :
Nom d'utilisateur : votre_nom
Répertoire actuel : /home/votre_nom/mes_scripts
=== Fin du script ===
Voici la structure recommandée pour tous vos scripts :
#!/bin/bash
# =====================================
# Nom du script : exemple_structure.sh
# Description : Exemple de structure de script
# Auteur : Votre nom
# Date : 13 juillet 2025
# Version : 1.0
# =====================================
# =============
# CONFIGURATION
# =============
# Variables globales
SCRIPT_NAME="Exemple de structure"
VERSION="1.0"
# =============
# FONCTIONS
# =============
# Fonction d'affichage d'aide
afficher_aide() {
echo "Usage: $0 [options]"
echo "Options:"
echo " -h, --help Afficher cette aide"
echo " -v, --version Afficher la version"
}
# Fonction principale
fonction_principale() {
echo "=== $SCRIPT_NAME v$VERSION ==="
echo "Démarrage du script..."
# Votre code principal ici
echo "Traitement en cours..."
echo "Script terminé avec succès !"
}
# =============
# PROGRAMME PRINCIPAL
# =============
# Appel de la fonction principale
fonction_principale1. En-tête informatif :
# =====================================
# Nom du script : mon_script.sh
# Description : Ce que fait le script
# Auteur : Votre nom
# Date : Date de création
# Version : Numéro de version
# =====================================Pourquoi c'est important :
- Vous vous souvenez de ce que fait le script 6 mois plus tard
- Autres utilisateurs comprennent rapidement le but
- Facilite la maintenance et les mises à jour
2. Section Configuration :
# Variables globales
REPERTOIRE_SAUVEGARDE="/home/backup"
FICHIER_LOG="mon_script.log"
DEBUG=false3. Section Fonctions :
# Fonction pour afficher des messages d'erreur
afficher_erreur() {
echo "ERREUR: $1" >&2
exit 1
}4. Programme principal :
# Point d'entrée du script
echo "Début du script"
# Votre logique principale ici
echo "Fin du script"Créons un deuxième script plus élaboré :
nano script_info_systeme.shContenu :
#!/bin/bash
# =====================================
# Nom : script_info_systeme.sh
# Description : Affiche des informations sur le système
# Auteur : Votre nom
# Date : 13 juillet 2025
# Version : 1.0
# =====================================
# =============
# VARIABLES
# =============
TITRE="Informations Système"
DATE_ACTUELLE=$(date)
UTILISATEUR=$(whoami)
# =============
# FONCTIONS
# =============
# Fonction pour afficher un titre encadré
afficher_titre() {
echo "================================"
echo " $1"
echo "================================"
}
# Fonction pour afficher une section
afficher_section() {
echo
echo "--- $1 ---"
}
# =============
# PROGRAMME PRINCIPAL
# =============
# Affichage du titre principal
afficher_titre "$TITRE"
# Informations de base
afficher_section "Informations de base"
echo "Date et heure : $DATE_ACTUELLE"
echo "Utilisateur : $UTILISATEUR"
echo "Répertoire actuel : $(pwd)"
# Informations système
afficher_section "Informations système"
echo "Système d'exploitation : $(uname -s)"
echo "Version du noyau : $(uname -r)"
echo "Architecture : $(uname -m)"
# Informations sur l'espace disque
afficher_section "Espace disque"
echo "Espace disque disponible :"
df -h | head -5
# Message de fin
echo
echo "Script terminé avec succès !"1. Toujours commencer par le shebang :
#!/bin/bash2. Utiliser des commentaires explicites :
# Ceci fait quelque chose d'important
commande_importante
# TODO: Améliorer cette partie plus tard3. Utiliser des noms de variables clairs :
# ✅ Bien
nom_utilisateur="jean"
fichier_configuration="/etc/config.conf"
# ❌ Pas bien
u="jean"
f="/etc/config.conf"4. Tester fréquemment : Après chaque modification, testez votre script :
./mon_script.sh5. Gérer les erreurs simplement :
# Vérifier si une commande a fonctionné
if ! commande_qui_peut_echouer; then
echo "Erreur : La commande a échoué"
exit 1
fiCréez un script appelé mon_journal.sh qui :
- Affiche la date du jour
- Demande votre humeur
- Sauvegarde votre réponse dans un fichier
journal.txt
Solution :
#!/bin/bash
# Script de journal personnel
echo "=== Journal du $(date +%d/%m/%Y) ==="
echo "Comment vous sentez-vous aujourd'hui ?"
read -p "Votre humeur : " humeur # read -p affiche un message et attend la saisie
echo "$(date): $humeur" >> journal.txt
echo "Entrée sauvegardée dans journal.txt"Note : La commande
readsera détaillée au chapitre 4. Pour l'instant, retenez simplement queread -p "message" variableaffiche un message et stocke la réponse de l'utilisateur dans une variable.
✅ Ce que vous avez appris :
- Créer un fichier script Bash
- Comprendre et utiliser le shebang
- Rendre un script exécutable avec
chmod +x - Exécuter un script avec
./nom_script.sh - Structurer proprement un script avec commentaires et sections
✅ Prochaines étapes : Dans le chapitre 3, nous apprendrons à utiliser des variables pour rendre nos scripts plus flexibles et puissants !
💡 Astuce : Gardez vos premiers scripts simples et ajoutez de la complexité progressivement. Chaque script qui fonctionne est une victoire !
⏮️ Introduction au scripting Bash | ⏭️ Variables et types de données