Bash scripting : Tout ce qu’il faut savoir

-
4
 m de lecture
-

Le scripting offre aux utilisateurs la possibilité de simplifier et de rationaliser leurs opérations quotidiennes. Les scripts Bash (acronyme de Bourne Again Shell) sont des éléments très puissants et utiles pour le développement.

Il s’agit d’un interpréteur de commandes pour les systèmes Unix et Linux.  Conçu par Brian Fox en 1989 pour le projet GNU, il a été développé pour remplacer le Bourne Shell original, apportant des améliorations significatives en termes de fonctionnalités et de compatibilité.

L’importance du Bash dans l’administration des systèmes et le développement logiciel ne peut être sous-estimée. Il permet d’automatiser des tâches répétitives, de gérer des systèmes à grande échelle et de faciliter le développement de scripts complexes pour diverses applications.

Les fondamentaux du Bash Scripting

Le Bash scripting est une compétence essentielle pour quiconque travaille avec des systèmes Unix ou Linux.

Bash et Bang : introduction au shebang

Le premier élément clé de tout script Bash est la ligne shebang. Elle indique au système quel interpréteur utiliser pour exécuter le script.

				
					#!/bin/bash
				
			
Le #! est connu sous le nom de shebang, et /bin/bash spécifie le chemin vers l’interpréteur Bash. Cette ligne est cruciale car elle assure que le script sera interprété par Bash, même si d’autres shells sont présents sur le système.

Premier pas : Hello World!

Avec votre éditeur de texte préféré, créez un fichier appelé hello.sh, et ajoutez-y le contenu suivant et enregistrez :

				
					#!/bin/bash
echo "Hello World!"
				
			

Rendre un script exécutable

Par défaut, un fichier texte n’a pas les permissions nécessaires pour être exécuté comme un programme. Afin de rendre votre script exécutable, il est nécessaire d’utiliser la commande suivant pour modifier les permissions :

				
					chmod +x hello.sh
				
			

Il est ensuite possible de vérifier les permissions avec la commande suivante :

				
					ls -l hello.sh
				
			

Exécution d’un script

Afin d’exécuter le script, plusieurs possibilité s’offrent à nous : 

  • Chemin relatif :
				
					./hello.sh
				
			
  • Utilisation du shell Bash :
				
					bash hello.sh
				
			
  • Via le shell sh, mais peut entraîner des comportements différents si le script utilise des fonctionnalités spécifiques à Bash :
				
					sh hello.sh
				
			

Commandes de base

Le Bash scripting repose sur l’utilisation efficace d’une variété de commandes pour effectuer des tâches simples et complexes. Voici quelques commande utilisées couramment pour naviguer et manipuler le système de fichier : 

  • Lister les fichiers et dossiers du répertoire courant
				
					ls
				
			
  • Changer de répertoire
				
					cd /path/to/directory
				
			
  • Afficher le dossier courant
				
					pwd
				
			
  • Créer un fichier vide, ou mettre à jour l’horodatage d’un fichier existant
				
					touch newfile.txt
				
			
  • Supprimer des fichiers ou dossiers
				
					rm file.txt
				
			

Combinaison de commandes

Les scripts Bash deviennent puissants lorsque vous combinez des commandes pour réaliser des tâches plus complexes. Voici quelques exemples :

  • Utilisation du “;” pour exécuter plusieurs commandes en une séquence
				
					cd /path/to/directory; ls; pwd
				
			
  • Redirection de sortie : Utilisez > pour rediriger la sortie d’une commande vers un fichier, ou >> pour ajouter à un fichier existant
				
					echo "Hello, World!" > hello.txt
echo "Hello again!" >> hello.txt
				
			
  • Utilisation du Pipe ( | ) pour diriger la sortie d’une commande comme entrée d’une autre commande
				
					ls -l | grep ".txt"
				
			

Variables et substitution

  • Déclaration d’une variable, et utilisation de cette dernière avec $
				
					NAME=”Alice”
echo “Hello, $NAME!”
				
			
  • Utilisation de la substitution pour utiliser la sortie d’une commande et l’utiliser comme variable
				
					DATE=$(date)
echo "Today's date is $DATE"
				
			

Notez que cet exemple est souvent utilisé dans le cadre de création de logs

Gestion des chemins

Comprendre et gérer les chemins de fichiers est essentiel pour naviguer efficacement dans le système de fichiers et écrire des scripts robustes.

Chemin absolu vs relatif

Image Absolu Image Relatif
Spécifie la localisation complète d'un fichier ou d'un répertoire à partir de la racine du système de fichiers. Indique la localisation d'un fichier ou d'un répertoire par rapport au répertoire courant.
Exemple : /home/user/documents/report.txt Exemple : documents/report.txt

Commandes associées

Pour localiser des fichiers et des commandes, plusieurs outils sont disponibles dans Bash : 

  • Trouver l’emplacement d’un exécutable
				
					which bash
				
			
  • Emplacement des binaires, sources et documentations associées à une commande
				
					whereis bash
				
			
  • Recherche de fichiers et dossiers
				
					find /home/user -name "report.txt"
				
			

Variables d’environnement

Les variables d’environnement sont des paires clé-valeur qui affectent le comportement des processus du système. Voici les plus courantes : 

  • $PATH : contient une liste de répertoires où le système recherche les exécutables. Pour le modifier, utilisez la commande suivante
				
					export PATH=$PATH:/new/directory/path
				
			
  • $HOME : Représente le dossier personnel de l’utilisateur
				
					echo $HOME
cd $HOME
				
			
  • $PWD : Indique le dossier de travail courant
				
					echo $PWD
				
			
  • $USER : Contient le nom de l’utilisateur actuel
				
					echo $USER
				
			

Contrôle de flux et logique

Le contrôle de flux et la logique sont des éléments essentiels du Bash scripting, permettant d’écrire des scripts dynamiques et adaptables.

Instructions conditionnelles

Elles permettent d’exécuter du code en fonction de certaines conditions. Voici un exemple illustrant l’utilisation de if…elif…else.

				
					#!/bin/bash
echo "Entrez un nombre : "
read number
if [ $number -gt 10 ]; then
    echo "Le nombre est plus grand que 10."
elif [ $number -eq 10 ]; then
    echo "Le nombre est égal à 10."
else
    echo "Le nombre est plus petit que 10."
fi
				
			

Boucles

Les boucles sont utilisées pour répéter des commandes plusieurs fois.

  • for
				
					for i in 1 2 3 4 5; do
    echo "Compteur : $i"
done
				
			
  • while
				
					count=1
while [ $count -le 5 ]; do
    echo "Compteur : $count"
    ((count++))
done
				
			
  • until
				
					count=1
until [ $count -gt 5 ]; do
    echo "Compteur : $count"
    ((count++))
done
				
			

Quelques scripts utiles et bonnes pratiques

Scripts d’exemple

  • Script de backup : copie des fichier d’une source vers une destination
				
					#!/bin/bash
# Ce script effectue une sauvegarde des fichiers
src="/home/user/documents"
dest="/backup/documents"

if [ ! -d $dest ]; then
    mkdir -p $dest
fi

for file in $src/*; do
    if [ -f $file ]; then
        cp $file $dest
        echo "Copié $file vers $dest"
    fi
done
				
			
  • Nettoyage : suppression des éléments d’un dossier temporaire
				
					#!/bin/bash
dir="/home/user/temp"
echo "Nettoyage du répertoire $dir"

for file in $dir/*; do
    if [ -f $file ]; then
        rm $file
        echo "Supprimé $file"
    fi
done
				
			

Quelques bonnes pratiques

1. Commentez : cela rend les scripts plus lisibles et compréhensibles

2. Nommez vos variables de manière descriptive. Évitez les noms de variables telles que $var1, $var2 ou encore $tmpvar.

3. Gérez les erreurs : utilisez des conditions pour vérifier le succès et capturer les erreurs de manière appropriée

4. Modularisez votre code grâce à l’utilisation de fonction, surtout si le script effectue plusieurs opérations, par exemple :

				
					backup_files() {
    # Code pour effectuer la sauvegarde
}
				
			

5. Déboguez pour identifier les erreurs. Voici les commandes utiles pour cela :

				
					#!/bin/bash
set -x # Active le mode trace, affichant chaque commande et son résultat
# Code du script

#!/bin/bash
set -e # Arrête le script en cas d’erreur
# Code du script

echo "Début du script" # Utilisation de echo à des points stratégiques du scripts pour vérifier les sorties et suivre les flux d’exécution
				
			

Pour conclure

Le Bash scripting est un outil puissant pour automatiser et simplifier les tâches sur les systèmes Unix et Linux. En maîtrisant les fondamentaux, les commandes de base, la gestion des chemins, le contrôle de flux et les bonnes pratiques, vous pouvez écrire des scripts robustes et efficaces pour améliorer votre productivité quotidienne.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?