Cours Scripts Unix/Linux en PDF (Intermédiaire)
Programmation de scripts Bash (Unix/Linux) — définition : un script est un fichier texte contenant une suite de commandes interprétées par un interpréteur de commandes (par exemple le Bourne shell ou le Bash) et pouvant être exécuté via un shebang ou en invoquant explicitement l'interpréteur. Programmation Shell et automatisation système : les scripts automatisent des opérations répétitives et servent d'interface légère entre l'administrateur, les processus et les utilitaires en ligne de commande. Compatibilité technique : exemples et extraits testés sur Debian, Ubuntu et CentOS. Ce PDF gratuit inclut des extraits de code et des exemples pratiques à télécharger pour mise en œuvre immédiate.
🎯 Ce que vous allez apprendre
- Modes d'exécution et shebang — lancer un script en le rendant exécutable avec
chmod +x, invoquer un interpréteur (sh monscript) ou sourcer (source/.). Choisir la méthode selon le contexte d'exécution et les différences liées au shebang#!/bin/shou à l'interpréteur actif. - Paramètres positionnels et variables — description et usage des variables spéciales :
$0(nom du script),$#(nombre d'arguments),$*et$@(tous les arguments, différences de comportement avec les guillemets),$1,$2(arguments individuels),$?(code de retour de la dernière commande) et$$(PID du processus). Exemples de validation du nombre d'arguments, parsing simple des options et propagation contrôlée des paramètres aux sous-processus. - Structures de contrôle (if, for, while, case) — usage de
test/[ … ], syntaxeif … then … fi, bouclesfor … doneet motifscase … esacpour écrire des flux d'exécution robustes adaptés à l'automatisation administrative. - Tests, comparaisons et arithmétique — tests de fichiers (
-f,-d,-e), tests de chaînes (-z) et comparaisons numériques (-eq,-gt), utilisation deexpret de l'expansion arithmétique$(( … ))pour calculs et combinaisons logiques. - Commandes internes et externes utiles — différence builtin / programme externe, interaction avec
read, gestion des codes de sortie viaexit, évaluation dynamique avecevalet temporisation avecsleep. Contrôle du flux et intégration dans des workflows. - Bonnes pratiques et exemples concrets — commentaires (
#), règles d'échappement, tests unitaires élémentaires et cas d'usage (parcours de fichiers, compilation en lot, traitement des utilisateurs connectés) pour produire des scripts lisibles, testables et maintenables.
Exemple de script d'automatisation
#!/bin/sh
# Traitement simple des fichiers passés en arguments (Programmation Shell)
if [ $# -eq 0 ]; then
echo "Usage: $0 fichier..."
exit 1
fi
for fichier in "$@"; do
echo "Traitement de : $fichier"
# exemple d'action : compter les lignes
wc -l "$fichier" || echo "Erreur lors du traitement de $fichier"
done
exit 0
📑 Sommaire du document
- Exécution
- Qu'est ce qu'un script ?
- Arguments
- Syntaxe
- Structures de contrôle (Bourne Shell)
- Commandes internes
- Commandes externes
💡 Pourquoi choisir ce cours ?
Rédigé par Thierry Vaira, ce mémo concis se concentre sur le Bourne Shell et présente des extraits exécutables (shebang, boucles, tests, expr, $(( ))) pour une mise en pratique immédiate. La sélection d'exemples met l'accent sur les commandes et patterns réellement utilisés en administration système afin de limiter le temps d'apprentissage et favoriser l'adoption rapide.
Maîtriser la programmation Shell pour l'administration
Les scripts réduisent les tâches récurrentes et sécurisent les opérations courantes : sauvegardes planifiées, rotation des logs, déploiement de paquets, gestion d'utilisateurs et collecte d'informations système pour supervision. En combinant Programmation Shell, cron et redirections, on obtient des procédures reproductibles et auditées. Le choix d'un interpréteur (Bourne Shell vs Bash) et l'emploi correct des Variables spéciales permettent d'écrire des scripts idempotents, faciles à maintenir et à intégrer dans des chaînes d'automatisation système.
Différences entre Bourne Shell et Bash
Le Bourne Shell (sh) offre portabilité et comportement minimal garanti sur la plupart des systèmes Unix. Bash ajoute des fonctionnalités ergonomiques : extensions de la syntaxe de test ([[ … ]]), tableaux, expansion avancée, substitution de processus et options d'extension (shopt). Pour des scripts destinés à de larges environnements, favoriser la compatibilité POSIX ; pour des scripts internes tirant parti d'extensions, utiliser Bash en spécifiant le shebang approprié.
👤 À qui s'adresse ce cours ?
- Public cible : administrateurs système, ingénieurs DevOps, développeurs automatisant des tâches, et étudiants en systèmes souhaitant renforcer leurs compétences en scripting.
- Prérequis : connaissance de base de la ligne de commande Unix/Linux, notions sur les permissions et l'appel de commandes (
who,cut,grep,wc) ainsi qu'une compréhension élémentaire des variables et redirections.
❓ Foire Aux Questions (FAQ)
Comment exécuter un fichier avec un shell précis et quel est le rôle du shebang ? Le shebang (#!) indique l'interpréteur utilisé par le noyau au lancement via ./fichier. À défaut, le shell courant lira les commandes. On peut invoquer explicitement un interpréteur (sh fichier, /bin/csh fichier) et il est nécessaire d'ajouter les permissions d'exécution avec chmod +x pour l'exécution directe.
Quand utiliser test/[ ] vs expr vs $(( )) ? test ou [ … ] convient pour évaluer conditions fichiers, chaînes ou numériques dans un if. expr est historique pour l'arithmétique et les expressions ; $(( … )) est plus lisible et sécurisé pour les calculs internes et doit être privilégié pour la plupart des opérations arithmétiques.