Bash Script : Qu'est ce que le Bash Script et comment l'utiliser ?

Vous vous demandez ce qu’est le Bash Script, vous en avez besoin et ne savez pas vous en servir ? Notre article vous apporte toutes les ressources nécessaires !

Antoine Grignola
Co-fondateur de DataBird
Mis à jour le
30/5/2024

Bienvenue dans le monde fascinant du Bash ! Si vous vous êtes déjà demandé ce que c'est ou comment l'utiliser, vous êtes au bon endroit.

Le Bash est un langage de programmation utilisé par les data Engineers et les développeurs pour automatiser les tâches sur des systèmes Linux.

Cet article va vous guider pas à pas à travers les bases, l'utilisation pratique, et les meilleures stratégies pour écrire et optimiser vos scripts. Prêt ? C'est parti ! 

Qu’est ce que le Bash ?

C'est quoi le Bash au juste ?

Le B.A.SH (Bourne-Again SHell) est un interpréteur de commandes souvent utilisé sur les systèmes d'exploitation Linux et Mac OS. C'est une interface sous forme de ligne de commande qui permet aux utilisateurs d'exécuter des commandes système, des scripts et des programmes.

Image d'explication de ce qu'est le Bash
Image d'explication de ce qu'est le Bash

A quoi sert un script Bash ?

Le script Bash est une série de commandes dans un fichier exécutable destiné à être interprété par le Bash (Bourne Again SHell).

Imaginez que vous ayez une liste de tâches répétitives : au lieu de les faire manuellement chaque jour, vous écrivez un script Bash pour le faire automatiquement pour vous en donnant des instructions à votre terminal.

Cela inclut tout, de la gestion des fichiers, répertoire personnel à l'analyse de données et à la génération de rapports.

Qu'est ce que le Bourne Shell ?

Le Bourne Shell, également appelé "sh", est un interpréteur de commandes utilisé sur les systèmes Unix. Il a été créé par Stephen Bourne en 1978 et est considéré comme le précurseur du Bash.

Qu'est ce qu'un Shell ?

Un shell est un environnement de ligne de commande qui permet aux utilisateurs d'interagir avec leur système d'exploitation en exécutant des commandes. Il agit comme une interface entre l'utilisateur et le système, lui permettant de lancer des programmes, des scripts et des instructions.

Qu'est ce qu'un Bin Bash ?

"Bin Bash" fait référence au chemin d'accès du fichier binaire de l'interpréteur de commandes Bash. Il est généralement situé dans le répertoire /bin, d'où le nom "bin bash".

Ce chemin d'accès permet aux utilisateurs et aux programmes d'exécuter des scripts Bash en utilisant le préfixe "#!/bin/bash" en haut du fichier.

Mais un Shebang qu'est ce que c'est ?

C'est la même chose qu'un Bin Bash.

Un Shebang (ou sha-bang) est une balise spéciale utilisée pour indiquer le chemin d'accès de l'interpréteur qui doit être utilisé pour exécuter un script.

En Bash, la balise "#!/bin/bash" est généralement utilisée en haut du fichier.

Le Shell Bash est-il un langage de programmation ?

Le Bash est un langage de script qui peut être utilisé pour écrire des programmes simples ou des scripts plus complexes.

Le Bash est à la fois un langaxge de programmation et un Shell.

Il utilise principalement des commandes et des opérations de base pour exécuter des tâches, mais il offre également des fonctionnalités avancées telles que les boucles, les conditions et les variables

Quelle différence entre les Shell Bash et ZSH (Z shell) ?

Le Z shell, ou ZSH, est un autre Shell populaire qui offre des fonctionnalités avancées par rapport au Bash.

Contrairement au Bash, le ZSH a une complétion automatique plus puissante et prend en charge les plugins pour améliorer ses fonctionnalités.

Il utilise également une syntaxe différente pour  les commandes et offre des raccourcis clavier personnalisables pour une utilisation plus rapide.

En outre, il existe d'autres Shells disponibles tels que le KornShell (KSH) et le C shell (CSH), qui ont également leurs propres fonctionnalités et avantages distincts.

Le C Shell , par exemple, utilise une syntaxe similaire au langage C, tandis que le KornShell est basé sur plusieurs Shells différents et offre une vaste gamme de fonctionnalités avancées.

Lexique du Shell Bash et des commandes Terminal

Working Directory :  Le répertoire actuel dans lequel vous travaillez.

Home Directory : Le répertoire principal de l'utilisateur, généralement représenté par ~ ou /home/username.

Root Directory :  Le répertoire racine du système de fichiers, représenté par /.

Path : Un ensemble de dossiers où l'ordinateur recherche les exécutables lorsqu'une commande est lancée.

Chemin Absolu (Absolute Path) :  Un chemin qui commence par le root directory (/), et peut être utilisé pour accéder à n'importe quel fichier ou dossier dans le système de fichiers.

Chemin Relatif (Relative Path) : Un chemin qui commence par le working directory, et est utilisé pour accéder aux fichiers ou dossiers à partir de cet emplacement spécifique.

Argument : Les informations fournies à  une commande pour qu'elle puisse exécuter une tâche spécifique.

Options : Les paramètres supplémentaires qui peuvent être ajoutés à une commande pour modifier son comportement ou ses résultats. Ils sont souvent représentés par un tiret (-) suivi d'une lettre ou d'un mot clé.

Regex (Regular Expression) :  Une séquence de caractères permettant de définir un modèle à rechercher dans une chaîne de caractères.

Commande : Une instruction qui demande à l'ordinateur d'exécuter une tâche spécifique.

Variable :  Une étiquette ou un nom associé à une valeur, qui peut être utilisée dans une commande pour remplacer cette valeur.

Argument : Une entrée fournie à la commande pour préciser quelle tâche doit être effectuée.

Options : Des paramètres supplémentaires qui peuvent être ajoutés à une commande pour modifier son fonctionnement.

Pipe : Un symbole (|) utilisé pour rediriger la sortie d'une commande vers l'entrée d'une autre commande.

Shell :  L'interface utilisateur permettant d'interagir avec le système d'exploitation en utilisant des commandes. Il existe différents types de shell, tels que Bash, Zsh et Csh. Forme récourcie de Shell : SH

Prompt : Le symbole affiché par le shell pour indiquer qu'il est prêt à recevoir une commande de l'utilisateur.

Script :  Un fichier contenant une série de commandes à exécuter dans un ordre spécifique. Les scripts peuvent être utilisés pour automatiser des tâches ou répéter des actions.

Tutoriel : Comment écrire un script Bash ?

L'écriture d'un script Bash, c'est un peu comme concocter votre plat favori

Vous avez une liste d'ingrédients (les commandes et les variables), et vous suivez des étapes (la logique du script) pour obtenir le résultat souhaité (l'exécution des tâches automatiques).

Dans cet article, nous allons vous expliquer comment vous pouvez créer votre propre ‘recette’ en Bash

Via une invite de commande (Terminal)

Pour commencer, ouvrez votre terminal Linux ou Mac. Testons quelque chose de simple. Tapez ce qui suit:

echo ‘Bonjour, monde !’

Cela vous fera voir Bonjour, monde ! sur votre terminal. C'est votre premier script Bash !

Via un notepad

Vous pouvez aussi écrire des scripts dans un éditeur de texte basique.

Ouvrez Notepad ou un autre éditeur, tapez echo ‘Hello, World’, sauvegardez le fichier avec l'extension .sh, par exemple monscript.sh.

Astuce : vous pouvez également créer directement de votre terminal un fichier en écrivant la commande touch monscript.sh pour créer le fichier dans le répertoire actuel, puis nano monscript.sh pour ouvrir l’éditeur directement dans le terminal.

Pour l'exécuter, tapez dans votre terminal :

bash monscript.sh

Via n’importe quel logiciel de code (Visual Code Studio, SublimeText…)

Pour des projets plus complexes, des éditeurs comme Visual Studio Code ou Sublime Text sont recommandés.

Ils offrent des fonctionnalités telles que la coloration syntaxique et la complétion automatique qui rendent l'écriture de script plus facile et plus rapide.

Pourquoi Apprendre le Scripting Bash ?

Apprendre le Bash Scripting peut vous faire économiser beaucoup de temps dans des tâches quotidiennes et répétitives

C'est aussi une compétence recherchée dans de nombreux domaines techniques.

Les Fondamentaux du Scripting Bash

Variables en Bash

Les variables vous permettent de stocker des informations que vous pouvez réutiliser plus tard

Par exemple :

Résultat de linux lors de l’exécution de la commande :

Structures de Contrôle (if, else, elif, etc.)

Les structures de contrôle, comme if, else, et elif, vous aident à prendre des décisions dans vos scripts

Voici un exemple :

Boucles (for, while) en Bash

Les boucles, comme for et while, répètent des tâches

Un exemple simple :

Voici le résultat lorsque l’on fait tourner le script :

Manipulation des Fichiers et Répertoires en Bash

Créer, supprimer et explorer des fichiers et des répertoires est un jeu d'enfant avec Bash.

Par exemple, pour créer un dossier :

Par exemple, pour supprimer un fichier :

Par exemple, pour changer de répertoire :

Par exemple, pour lister le contenu d'un répertoire :

La commande ls -l nous affiche le contenu détaillé du répertoire actuel:

Regardons à quoi correspondent les informations des fichiers

  • total 24: Ceci indique la taille totale des fichiers listés dans le répertoire, généralement en kilo-octets.
  • -rw-r--r--: Ce sont les permissions du fichier. Elles sont décomposées comme suit :
  • Le premier caractère indique le type de fichier (- pour un fichier ordinaire, d pour un dossier).
  • Les trois caractères suivants (rw-) montrent les permissions de l'utilisateur propriétaire du fichier (ici, r pour lire et w pour écrire ; l'absence de x indique que l'exécution n'est pas autorisée).
  • Les trois caractères suivants (r--) indiquent les permissions du groupe auquel le fichier appartient (ici, r pour lire seulement).
  • Les trois derniers caractères (r--) représentent les permissions pour les autres utilisateurs (ici, r pour lire seulement).
  • 1: C'est le nombre de liens physiques vers le fichier. Un fichier avec un lien physique est un fichier avec plusieurs noms dans le système de fichiers, qui pointent vers la même zone de données.
  • clarisse: C'est le nom de l'utilisateur propriétaire du fichier.
  • staff: C'est le nom du groupe auquel appartient le fichier.
  • 45, 158, 0, 42: Ce sont les tailles des fichiers en octets.
  • Apr 13 16:32, Apr 13 16:47, Apr 13 16:37, Apr 13 16:26: Ce sont les dates et heures de la dernière modification des fichiers.
  • boucles.sh, ex.save, existence_dossier, prenom.sh: Ce sont les noms des fichiers ou dossiers.

Par exemple, pour copier des fichiers :

cp source.txt destination.txt

Cette commande copie le fichier texte source.txt vers destination.txt.

Pour copier des dossiers, utilisez cp -r source_dir destination_dir.

Les Fonctions en Bash

Les fonctions vous permettent de regrouper des commandes que vous souhaitez réutiliser.

Voici comment définir une fonction simple :

Voici comment l’utiliser :

Cette commande appelle la fonction dire_bonjour avec "Alice" comme argument, ce qui affichera bien ‘Bonjour, Alice’.

Permission Administrateur Système : Comment contourner le "Permission Denied" en Bash :

Attention : si l’erreur ‘Permission denied’ s’affiche lors de l'exécution, cela signifie que vous n’avez pas la permission d'exécution du script. Il vous suffit alors de changer la permission telle que

Exemple de fonction pour vérifier l'existence d'un fichier :

Scripting Avancé : Utilisation des Expressions Régulières en Bash

Les expressions régulières sont des outils puissants pour travailler avec du texte.

Par exemple, pour trouver des fichiers txt dans un dossier :

 ls *.txt

 Nous pouvons également utiliser le language grep avec regex :

grep '^[0-9]' fichier.txt 

Cette commande recherche toutes les lignes commençant par un chiffre dans fichier.txt.

Débogage et Optimisation de vos commandes Bash

Le débogage est une étape cruciale dans le développement de scripts Bash, permettant de suivre le flux d'exécution et de localiser les erreurs potentielles

L'utilisation de la commande set avec l'option -x est une technique éprouvée pour faciliter cette tâche.

bash -x mon_script.sh

Cela exécute mon_script.sh en mode débogage, affichant chaque commande exécutée, ce qui aide à identifier où les choses ne se passent pas comme prévu.

Prenons un exemple concret. Imaginez que votre script ne se comporte pas comme prévu, et vous n'êtes pas sûr de l'endroit où les choses déraillent. En utilisant bash -x, vous serez en mesure de voir chaque commande telle qu'elle est exécutée, y compris les expansions de variables et les exécutions conditionnelles, ce qui peut révéler où le comportement réel dévie de vos intentions initiales.

Sécurité et Bonnes Pratiques en commandes Bash

La sécurité en scripting Bash est primordiale, surtout lorsqu'il s'agit de traiter des données sensibles ou de maintenir des systèmes critiques

Il est essentiel de valider soigneusement toutes les entrées pour éviter les vulnérabilités, telles que les injections de commandes, qui pourraient être exploitées par des utilisateurs malveillants

Pensez à la validation des entrées comme à la vérification de la qualité des ingrédients avant de préparer un repas : c'est une étape non négociable pour garantir la qualité et la sécurité.

L'utilisation des guillemets autour des variables est une autre bonne pratique pour empêcher des comportements inattendus, tels que la scission de mots et l'expansion de motifs (globbing), qui peuvent se produire avec des entrées imprévues. 

Les guillemets assurent que les données manipulées sont interprétées de manière sûre et prévisible, à l'image d'un chef qui s'assure que chaque ingrédient est ajouté avec précision pour créer le plat parfait.

Automatisation des Tâches avec des Scripts Bash

L'automatisation via les jobs cron transforme le script Bash en un outil encore plus puissant

En programmant des tâches répétitives, comme l'exécution quotidienne d'un script de sauvegarde à 5 heures du matin avec ‘0 5 * * * /home/user/backup.sh’, vous libérez du temps et minimisez le risque d'erreur humaine

C'est l'équivalent d'avoir une kitchenette automatisée qui prépare le café chaque matin sans que vous ayez à lever le petit doigt.

Exemples Pratiques et Cas d'Utilisation

En pratique, les scripts de sauvegarde illustrent parfaitement la capacité du Bash à sécuriser les données en les archivant automatiquement sur un serveur distant. Cela assure que même en cas d'incident sur le système local, vos données essentielles sont en sécurité.

L'analyse des logs est une autre application pratique des scripts Bash. Un script bien conçu peut surveiller vos fichiers log à la recherche de modèles indiquant des erreurs ou des activités suspectes et peut vous alerter immédiatement

Ces scripts sont comme des détecteurs de fumée dans une cuisine : ils vous alertent avant que le problème ne devienne critique.

Ressources et Outils Utiles pour le Scripting Bash 

Utiliser des éditeurs de texte avancés tels que Visual Studio Code ou Sublime Text peut améliorer significativement votre efficacité en scriptant

Ces outils offrent des fonctionnalités telles que la coloration syntaxique, la complétion automatique, et l'intégration de terminal, qui sont essentiels pour le debugging et le testing des scripts.

Visual Studio Code pour écrire en Bash

Visual Studio Code est un outil qui inclut une extension pour le langage Bash, qui fournit des fonctionnalités avancées telles que la validation de code, l'intellisense et la navigation dans le code source

En utilisant cette extension, vous pouvez également exécuter des scripts directement depuis l'éditeur en cliquant sur un bouton. 

Vous pouvez facilement installer l'extension en utilisant le marché des extensions de Visual Studio Code.

Sublime Text pour écrire en Bash

Sublime Text est également un excellent outil pour écrire et exécuter vos scripts en Bash. En ajoutant le plugin ShellScript à Sublime, vous bénéficiez d'une coloration syntaxique améliorée et de la complétion automatique pour les commandes Bash

Vous pouvez également exécuter vos scripts directement depuis l'éditeur en utilisant des raccourcis clavier personnalisables.

Debugging et Testing

En plus d'utiliser un éditeur de texte avancé, il est également important de tester et déboguer vos scripts pour éviter les erreurs et les bugs

Il existe des outils tels que Bash Debugger ou BashUnit qui peuvent vous aider dans ce processus. Ces outils fournissent des fonctionnalités telles que le suivi des variables, la mise en pause du script et l'exécution de tests unitaires pour vous assurer que votre script fonctionne correctement.

ChatGPT pour écrire en Bash

Enfin, pour les utilisateurs avancés, il existe des outils tels que ChatGPT qui vous permettent de faire de la Data Analyse et d'écrire en Bash de manière conversationnelle

Vous pouvez poser des questions et obtenir des réponses détaillées sur la façon d'accomplir une tâche spécifique en Bash, ce qui peut être utile lorsque vous êtes bloqué ou que vous cherchez à apprendre de nouvelles fonctionnalités.

Rejoignez-nous pour notre Journée Portes Ouvertes en live le 27 juin à 18h30
Explorez le bootcamp Databird ainsi que nos programmes de formation data.
Je m'inscris à l'évènement
Faites un premier pas dans la data avec nos cours gratuits
Démarrer

Nos derniers articles sur

Data Engineering

Vous ne savez pas à quoi sert un Data Lake ? Pas de soucis ! Nous vous expliquons les bases à des Data Lake ainsi que ses différentes externalités.
Vous ne connaissez pas les différences entre un processus ETL et ELT ? Dans cet article nous vous expliquons les deux concepts jumeaux !
Vous vous demandez ce qu'est un pipeline de donnée et à quoi il sert dans le monde du big data ? N'allez pas plus loin ! On vous explique le concept !
Difficulté :
Moyenne