Bash Linux : &&, || et & – enchaîner ou lancer des commandes en parallèle

Dans ce tutoriel, on va voir comment enchaîner et exécuter des commandes dans le terminal Linux en utilisant les opérateurs Bash &&, || et &.
Vous apprendrez à :

  • exécuter une commande seulement si la précédente réussit avec &&,
  • exécuter une commande si la précédente échoue avec ||,
  • lancer plusieurs commandes en parallèle avec &.

À la fin de ce guide, vous saurez maîtriser ces opérateurs pour rendre vos scripts et votre utilisation du terminal plus efficaces et puissants.

Utiliser && en Bash pour exécuter une commande uniquement si la précédente réussit

L’opérateur && permet d’exécuter une commande uniquement si la commande précédente a réussi. C’est idéal pour enchaîner des commandes dépendantes les unes des autres.

Quelques exemples d’utilisations :

Mise à jour du système :

sudo apt update && sudo apt upgrade -y

Mise à jour de conteneurs utilisant un fichier docker-compose.yml :

sudo docker compose down && sudo docker compose pull && sudo docker compose up -d

Utiliser || en Bash pour exécuter une commande uniquement si la précédente échoue

L’opérateur || permet d’exécuter une commande uniquement si la commande précédente a échoué. Il est utile pour gérer les erreurs directement dans le terminal ou vos scripts.

Exemples concret d’utilisation :

Vérifier si un dossier existe, sinon le créer :

[ -d /tmp/mon_dossier ] || mkdir /tmp/mon_dossier

Installer un paquet si la commande échoue :

command -v curl || sudo apt install curl -y

Alerter en cas d’échec d’une commande :

cp fichier.txt /destination/ || echo "Erreur : impossible de copier fichier.txt"

Lancer des commandes en parallèle dans le terminal Bash avec &

Le symbole & permet de lancer une commande en arrière-plan, c’est-à-dire de l’exécuter en parallèle avec d’autres commandes, sans bloquer le terminal.

3 exemples pratiques d’utilisation de & en Bash pour exécuter des commandes en parallèle au quotidien :

Lancer plusieurs téléchargements simultanément :

wget https://example.com/fichier1.zip &
wget https://example.com/fichier2.zip &
wget https://example.com/fichier3.zip &
wait

L’ajout de wait à la fin permet d’attendre que tous les téléchargements soient terminés avant de continuer.

Exécuter plusieurs scripts de traitement en parallèle :

./script1.sh &
./script2.sh &
./script3.sh

Lancer plusieurs pings en parallèle :

ping -c 4 google.com &
ping -c 4 cloudflare.com &
ping -c 4 yahoo.com

Bonus : Enchaîner plusieurs commandes en Bash avec ; sans condition

Le point-virgule ; permet d’exécuter plusieurs commandes consécutives sur une seule ligne, sans tenir compte de la réussite ou de l’échec de la commande précédente. C’est l’opérateur idéal pour enchaîner rapidement des commandes dans le terminal.

Exemples pratiques pour le ; en Bash :

Exécuter plusieurs commandes consécutives :

echo "Début du script" ; mkdir /tmp/test ; echo "Dossier créé"

Les commandes s’exécutent dans l’ordre, même si mkdir échoue.

Mettre à jour le système et nettoyer ensuite :

sudo apt update ; sudo apt upgrade -y ; sudo apt autoremove -y

Afficher plusieurs messages sur une seule ligne

echo "Bonjour" ; echo "Bienvenue sur le terminal" ; echo "Amusez-vous !"

Conclusion

Dans ce tutoriel, nous avons vu comment enchaîner et exécuter des commandes dans le terminal Bash avec différents opérateurs :

  • && : exécuter la commande suivante si la précédente réussit.
  • || : exécuter la commande suivante si la précédente échoue.
  • & : lancer une commande en parallèle en arrière-plan.
  • ; : enchaîner plusieurs commandes sans condition, toujours dans l’ordre.

Maîtriser ces opérateurs vous permet de rendre vos scripts et vos usages du terminal plus efficaces et flexibles, que ce soit pour automatiser des tâches, gérer des erreurs ou gagner du temps avec l’exécution parallèle.

Avec ces notions, vous êtes désormais capable de contrôler finement l’exécution de vos commandes en Bash et d’optimiser vos scripts Linux.

Romain Drouche
Architecte Système | MCSE: Core Infrastructure
Expert en infrastructures IT avec plus de 15 ans d’expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d’Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.

Laisser un commentaire