Bash : comprendre et créer un premier script

Auteur : Publié le

En bref : Bash est un shell système, c’est-à-dire un programme qui lit les commandes de l’utilisateur et demande leur exécution. Il permet de manipuler des fichiers, de lancer des programmes et d’automatiser des tâches répétitives à l’aide de scripts. Il est couramment utilisé sous Linux et également disponible sous macOS. Sous Windows, on peut notamment l’utiliser via WSL ou Git Bash.

À quoi sert Bash ?

Le nom Bash vient de Bourne Again SHell et fait référence au shell Bourne, qui l’a précédé. Il joue aussi sur l’expression anglaise « born again », qui signifie « né à nouveau ». Bash est à la fois un outil interactif pour saisir des commandes et un langage de script. Un script est un fichier texte contenant des instructions exécutées par un interpréteur — ici, Bash.

En mode interactif, vous saisissez une commande et obtenez immédiatement son résultat. Dans un script, vous enregistrez une suite d’opérations que vous pourrez relancer sans répéter manuellement chaque étape.

Bash sert notamment à :

Par exemple, au lieu de déplacer manuellement plusieurs dizaines de rapports vers le bon répertoire, vous pouvez exprimer cette opération en une seule commande. Si la tâche implique aussi de vérifier des conditions et d’enregistrer des messages, un script devient plus pratique.

Bash, terminal et commandes : des notions distinctes

Le terminal est l’interface dans laquelle vous saisissez du texte et lisez les réponses. Sur un ordinateur personnel, il s’agit le plus souvent d’une application qui émule un terminal. Le shell fonctionne au sein de cette session : il interprète les instructions saisies. Bash est un shell parmi d’autres, comme Zsh, Fish et PowerShell.

Ouvrir un terminal ne signifie donc pas que vous utilisez Bash. Sur les installations récentes de macOS, le shell par défaut est généralement Zsh. Un terminal sous Windows peut, par exemple, ouvrir PowerShell ou un environnement Linux.

Toutes les commandes utilisées dans Bash ne font pas partie de Bash. cd, qui sert à changer de répertoire, est une commande intégrée. En revanche, ls, grep et mkdir sont généralement des programmes distincts lancés par le shell. La disponibilité de ces outils et des options qu’ils prennent en charge dépend de l’environnement.

Bash peut relier des programmes au moyen d’un pipe, représenté par le caractère |. Un pipe transmet la sortie standard d’une commande à l’entrée standard de la suivante :

printf '%s\n' 'rapport.txt' 'photo.jpg' | grep '\.txt$'

Ici, printf affiche deux noms, et grep sélectionne la ligne qui se termine par .txt. Il s’agit uniquement de filtrer du texte : cet exemple ne crée ni ne recherche de fichiers sur le disque.

Vérifier la disponibilité de Bash et le lancer

Sous Linux, Bash est souvent déjà installé. macOS fournit également Bash, mais la version livrée peut différer de celles disponibles dans d’autres environnements. Pour vérifier que le programme est disponible et connaître sa version, saisissez dans le terminal :

bash --version

Ce test ne confirme pas que la session actuelle utilise Bash : il lance simplement le programme disponible avec l’option d’affichage de sa version. La commande bash ouvre une session de ce shell, et exit la ferme. Une fois dans Bash, vous pouvez vérifier la version du shell en cours avec printf '%s\n' "$BASH_VERSION".

Sous Windows, deux solutions courantes répondent à des besoins différents. WSL, le sous-système Windows pour Linux, permet d’utiliser un environnement Linux. Git Bash fournit Bash et un ensemble d’outils utiles notamment pour travailler avec Git, mais ce n’est pas un environnement Linux complet. Consultez la documentation de Microsoft ou de Git for Windows pour connaître les exigences d’installation actuelles.

Un premier script dans un répertoire de test sûr

L’exemple suivant crée deux rapports vides et les déplace dans un sous-répertoire. Commencez par créer un nouveau répertoire de travail et vous y placer :

mkdir bash-essai
cd bash-essai

Si ce répertoire existe déjà, choisissez un autre nom. Ne poursuivez qu’après avoir réussi à vous placer dans le nouveau répertoire. À l’aide d’un éditeur de texte, créez-y le fichier ranger.sh avec le contenu suivant :

#!/usr/bin/env bash

repertoire="rapports"
mkdir -p "$repertoire" || exit 1
touch rapport-01.txt rapport-02.txt || exit 1

for fichier in rapport-*.txt; do
  mv -- "$fichier" "$repertoire/" || exit 1
done

printf 'Rapports déplacés dans le répertoire : %s\n' "$repertoire"

La première ligne, appelée shebang, indique l’interpréteur à utiliser lorsque le fichier est exécuté directement. La variable repertoire contient le nom du répertoire de destination, et la boucle for répète l’opération pour chaque nom de fichier correspondant au motif. L’instruction || exit 1 interrompt le script si la commande précédente signale une erreur.

Lancez le script et vérifiez le résultat :

bash ranger.sh
ls rapports

Avec cette méthode, le fichier n’a pas besoin de permission d’exécution : vous désignez l’interpréteur par la commande bash. Les guillemets autour des variables empêchent notamment que les noms contenant des espaces soient découpés en plusieurs arguments.

Quand utiliser Bash et quelles précautions prendre ?

Bash est un bon choix lorsque la tâche consiste principalement à combiner des outils existants et à manipuler des fichiers. Pour une logique élaborée, des structures de données complexes ou une application plus importante, Python ou un autre langage généraliste sera souvent plus lisible et plus facile à tester.

Les commandes s’exécutent avec les droits de l’utilisateur qui les lance. Supprimer un fichier avec rm ne le place généralement pas dans la corbeille, et la redirection > peut écraser le contenu d’un fichier existant. N’exécutez pas des instructions copiées avec sudo tant que vous ne comprenez pas leur fonctionnement : cet outil permet d’exécuter des commandes avec les droits d’un autre utilisateur.

Pour commencer, modifiez le script d’exemple afin qu’il affiche simplement les noms des fichiers avec printf au lieu de les déplacer avec mv. Vérifier la liste avant d’effectuer des modifications est une habitude simple qui vous sera également utile lorsque vous travaillerez avec de vraies données.

À lire aussi

Découvrez comment PHP-FPM traite les requêtes PHP, son rôle face au serveur web et comment adapter ses processus au trafic.
Découvrez BIND, logiciel libre de serveur DNS : ses rôles, la gestion des domaines et les cas où le déployer vous-même.
Découvrez le registre polonais REGON, son numéro, ses différences avec NIP et KRS et comment vérifier les données d’une entreprise.