Recherche de site Web

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


Le chaînage de commandes Linux consiste à 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 est quelque chose comme si vous écriviez de courts scripts shell sur le shell lui-même, et que vous les exécutiez directement depuis le 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 de chaînage.

Cet article vise à mettre en lumière 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 esperluette (&) – Exécuter la commande Linux en arrière-plan

La fonction de '&' est de faire fonctionner la commande en arrière-plan. Il suffit de taper la commande suivie d’un espace et d’un « & ». 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 Semi-Colon (;) - 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 de mise à jour, puis l’instruction de mise à niveau, et enfin créera un répertoire 'test' sous le répertoire de travail actuel.

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

L’opérateur AND (&&) n’exécutera la deuxième commande que si l’exécution de la première commande SUCCEEDS, c’est-à-dire que le statut de sortie de 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 l’aide de la commande links, dans le terminal, mais avant cela, je dois vérifier si l’hébergeur est en ligne ou non.

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

4. Opérateur OR (||) – Exécution de commande conditionnelle

L’opérateur OR (||) est un peu comme une déclaration 'autre' 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 le statut de sortie de la première commande est '1'.

Par exemple, je veux exécuter 'apt update' à partir d’un compte non root et si la première commande échoue, 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’a pas été autorisé à mettre à jour le système, cela signifie que l’état de sortie de la première commande est '1' et donc que 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écute 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 exécutée avec succès donne un statut de sortie '0' et donc la dernière partie de la commande n’est pas exécutée.

5. NOT operator ( !) – Exécution sélective des commandes

L’opérateur NOT ( !) ressemble beaucoup à une instruction 'except'. 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' à 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

Maintenant, supprimez tous les fichiers sauf le fichier 'html' en une seule fois, 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. ET – Opérateur OU (&& – ||) – Exécution conditionnelle des commandes

L’opérateur ci-dessus est une combinaison de l’opérateur 'AND' et de l’opérateur 'OR'. C’est un peu comme une déclaration « si-sinon ».

Par exemple, faisons un ping pour linux-console.net, si le succès fait écho à 'Vérifié', sinon à 'Host Down'.

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

Exemple de sortie :

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 essayez à nouveau la même commande.

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

Exemple de sortie :

ping: unknown host linux-console.net 
Host Down

7. PIPE Operator (|) – Traitement simplifié de la production

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, canalisez la sortie de 'ls -l’vers 'less' et voyez la sortie 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 générez 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 dans l’ordre de priorité.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

Dans la pseudo-commande ci-dessus, que se passe-t-il si le Command_x1 échoue ? Aucun des Command_x2, Command_x3, Command_x4 ne serait exécuté, pour cela nous utilisons l’opérateur de précédence, comme :

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

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

10. Opérateur de concaténation (\) – Concaténation de commande multiligne

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

nano test\(1\).txt

C’est tout pour l’instant. Je vais bientôt rédiger un autre article intéressant. D’ici là, restez à l’écoute, en bonne santé et connecté à Tecmint. N’oubliez pas de donner votre précieux commentaire dans notre section de commentaires.

Articles connexes: