Recherche de site Web

10 opérateurs de chaînage utiles sous Linux avec des exemples


Le chaînage de commandes Linux signifie combiner plusieurs commandes et les faire exécuter en fonction du comportement de l'opérateur utilisé entre elles.

Le chaînage de commandes sous Linux revient à écrire de courts scripts shell sur le shell lui-même et à les exécuter directement à partir du terminal. Le chaînage permet d’automatiser le processus.

De plus, une machine sans surveillance peut fonctionner systématiquement avec l'aide d'opérateurs enchaîneurs.

Cet article vise à faire la lumière sur les opérateurs de chaînage de commandes fréquemment utilisés. Il fournit de courtes descriptions et des exemples correspondants qui peuvent améliorer votre productivité et vous permettre d'écrire du code concis et significatif tout en réduisant parfois la charge du système.

1. Opérateur Ampersand (&) – Exécutez la commande Linux en arrière-plan

La fonction de '&' est de faire exécuter la commande en arrière-plan. Tapez simplement la commande suivie d'un espace blanc et de « & ». Vous pouvez exécuter plusieurs commandes en arrière-plan, en une seule fois.

Exécutez une seule commande Linux appelée « ping » en arrière-plan :

ping -­c5 linux-console.net &

Exécutez simultanément deux ou plusieurs commandes apt en arrière-plan :

apt update & apt upgrade &

2. Opérateur point-virgule (;) – Exécuter plusieurs commandes

L'opérateur point-virgule (;) permet d'exécuter plusieurs commandes en une seule fois et l'exécution de la commande se fait de manière séquentielle.

apt update ; apt upgrade ; mkdir test

La combinaison de commandes ci-dessus exécutera d'abord l'instruction update, puis l'instruction upgrade, et enfin créera un répertoire « test » sous le répertoire de travail actuel.

3. Opérateur AND (&&) – Exécutez la deuxième commande en cas de succès

L'opérateur AND (&&) exécuterait la deuxième commande uniquement, si l'exécution de la première commande RÉUSSIT, c'est-à-dire que l'état de sortie du la première commande est 0. Cette commande est très utile pour vérifier l'état d'exécution de la dernière commande.

Par exemple, je souhaite visiter le site Web linux-console.net en utilisant la commande links, dans le terminal mais avant cela, je dois vérifier si l'hébergeur est en direct ou pas.

ping -c3 linux-console.net && links linux-console.net

4. Opérateur OU (||) – Exécution de commandes conditionnelles

L'opérateur OR (||) ressemble beaucoup à une instruction « else » en programmation. L'opérateur || vous permet d'exécuter la deuxième commande uniquement si l'exécution de la première commande échoue, c'est-à-dire que l'état de sortie de la première commande est « 1 ».

Par exemple, je souhaite exécuter 'apt update' à partir d'un compte non root et si la première commande échoue, alors la deuxième commande 'links linux-console.net' s'exécutera.

apt update || links linux-console.net

Dans la commande ci-dessus, puisque l'utilisateur n'était pas autorisé à mettre à jour le système, cela signifie que l'état de sortie de la première commande est '1' . et donc la dernière commande 'links linux-console.net' est exécutée.

Que se passe-t-il si la première commande est exécutée avec succès, avec un statut de sortie « 0 » ? Évidemment! La deuxième commande ne s'exécutera pas.

mkdir test || links linux-console.net

Ici, l'utilisateur crée un dossier « test » dans son répertoire personnel, pour lequel l'utilisateur est autorisé. La commande s'est exécutée avec succès en donnant un statut de sortie « 0 » et donc la dernière partie de la commande n'est pas exécutée.

5. Opérateur NON (!) – Exécution sélective des commandes

L'opérateur NOT (!) ressemble beaucoup à une instruction « sauf ». Cette commande exécutera tout sauf la condition fournie. Pour comprendre cela, créez un répertoire « tecmint » dans votre répertoire personnel et « cd » dans celui-ci.

mkdir tecmint 
cd tecmint

Ensuite, créez plusieurs types de fichiers dans le dossier « tecmint ».

touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

Vous voyez, nous avons créé tous les nouveaux fichiers dans le dossier « tecmint ».

ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

Supprimez maintenant tous les fichiers sauf le fichier 'html' d'un seul coup, de manière intelligente à l'aide de la commande rm.

rm -r !(*.html)

Juste pour vérifier, dernière exécution. Répertoriez tous les fichiers disponibles à l’aide de la commande ls.

ls 

a.html  b.html

6. Opérateur AND – OR (&& – ||) – Exécution conditionnelle des commandes

L'opérateur ci-dessus est une combinaison de l'opérateur « AND » et « OR ». Cela ressemble beaucoup à une déclaration « if-else ».

Par exemple, envoyons un ping à linux-console.net, si le succès fait écho à « Vérifié », sinon faites écho à « Host Down ».

ping -c3 linux-console.net && echo "Verified" || echo "Host Down"

Exemple de résultat :

PING linux-console.net (212.71.234.61) 56(84) bytes of data. 
64 bytes from linux-console.net (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- linux-console.net ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2001ms 
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms 
Verified

Maintenant, déconnectez votre connexion Internet et réessayez la même commande.

ping -c3 linux-console.net && echo "verified" || echo "Host Down"

Exemple de résultat :

ping: unknown host linux-console.net 
Host Down

7. Opérateur PIPE (|) – Traitement de sortie rationalisé

Cet opérateur PIPE est très utile lorsque la sortie de la première commande agit comme une entrée pour la deuxième commande. Par exemple, transférez la sortie de « ls -l » vers « less » et consultez le résultat de la commande.

ls -l | less

drwx------  tecmint tecmint  4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:35 2023 bin
drwxr-xr-x  root    root     4.0 KB Wed Nov 24 22:05:09 2021 DEBIAN
drwxrwxr-x  tecmint tecmint  4.0 KB Sat Nov 18 12:32:49 2023 Desktop
drwx--x---+ tecmint tecmint  100 KB Fri Dec  8 12:00:49 2023 Downloads
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 10:25:07 2023 llpp
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:26:46 2023 MyImages
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 14:55:42 2023 Obsidian Vault
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:32 2023 opt
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:46:54 2023 php
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 15:54:33 2023 tar_examples
.rw-rw-r--  tecmint tecmint   73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png
.rw-rw-r--  tecmint tecmint  2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts
.rw-rw-r--  tecmint tecmint   41 KB Thu Nov 23 11:34:33 2023 Create-Users-in-Linux.png
...

8. Opérateur de combinaison de commandes {}

Combinez deux commandes ou plus, la deuxième commande dépend de l'exécution de la première commande.

Par exemple, vérifiez si un répertoire « bin » est disponible ou non et affichez la sortie correspondante.

[ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.

9. Opérateur de priorité() – Gestion de l'ordre d'exécution des commandes

L'opérateur () permet d'exécuter des commandes par ordre de priorité.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

Dans la pseudo-commande ci-dessus, que se passe-t-il si la Command_x1 échoue ? Aucune des commandes Command_x2, Command_x3 et Command_x4 ne serait exécutée. Pour cela, nous utilisons l'Opérateur de priorité, comme :

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

Dans la pseudo-commande ci-dessus, si Command_x1 échoue, Command_x2 échoue également mais Command_x3 et Command_x4 s'exécutent toujours en fonction de la état de sortie de Command_x3.

10. Opérateur de concaténation (\) – Concaténation de commandes multilignes

L'Opérateur de concaténation (\), comme son nom l'indique, est utilisé pour concaténer des commandes volumineuses sur plusieurs lignes du shell. Par exemple, la commande ci-dessous ouvrira un fichier texte test(1).txt.

nano test\(1\).txt

C'est tout pour le moment. Je proposerai très bientôt un autre article intéressant. D'ici là, restez à l'écoute, en bonne santé et connecté à Tecmint. N'oubliez pas de donner vos précieux commentaires dans notre section commentaires.