Présentation
Dans cet article, je vais vous expliquer 6 opérateurs de chaînage en ligne de commande du shell Bash (opérateur Linux). Voyons maintenant ce qu'est l'opérateur de chaînage. L'opérateur de chaînage est quelque chose qui aide à exécuter plusieurs commandes à la fois, comme si nous exécutions un script et que la tâche se termine automatiquement. Habituellement, les gens utilisent les opérateurs de chaînage de la ligne de commande du shell Bash (opérateur Linux) dans les scripts shell, mais nous pouvons également utiliser ces opérateurs à l'invite du shell.
Ici, nous allons discuter ci-dessous des opérateurs de chaînage de la ligne de commande du shell Bash (opérateur Linux) :
- Opérateur &&(opérateur AND)
- Opérateur OU (||)
- Opérateur AND &OR (&&et ||)
- Opérateur PIPE (|)
- Opérateur point-virgule (;)
- Opérateur d'esperluette (&)
Parlons maintenant de chaque opérateur un par un.
1. Opérateur &&(Opérateur ET)
La syntaxe pour utiliser l'opérateur AND est :
# command 1 && command 2
AND Operator n'exécutera la deuxième commande que si la première commande s'exécute avec succès. Jetez maintenant un œil à la syntaxe ci-dessus. Ici, la commande 2 ne s'exécutera que si la commande 1 s'exécute avec succès. Par exemple :
Ici, comme vous pouvez le voir ci-dessous, la première commande s'est terminée avec succès, d'où la deuxième commande df -h exécutée.
$ ping -c 5 localhost && df -h PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.067 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.086 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.085 ms 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.081 ms 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.086 ms --- localhost ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4100ms rtt min/avg/max/mdev = 0.067/0.081/0.086/0.007 ms Filesystem Size Used Avail Use% Mounted on udev 966M 0 966M 0% /dev tmpfs 199M 12M 187M 6% /run /dev/sda1 18G 5.3G 12G 32% / tmpfs 992M 212K 992M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 992M 0 992M 0% /sys/fs/cgroup tmpfs 199M 60K 199M 1% /run/user/1000
Testons maintenant l'opérateur AND de différentes manières. Ici, je vais échouer la première commande et voir si la deuxième commande s'exécute ou non.
$ ping -c 5 local && df -h ping: unknown host local
Comme vous pouvez le voir ci-dessus, la première commande a échoué, la deuxième commande n'est donc pas exécutée.
2. Opérateur OU (||)
Sur notre liste, la ligne de commande Second Bash Shell Chaining Operators (opérateur Linux) est OR Operator. La syntaxe à utiliser OR Operator est :
# command 1 || command 2
L'opérateur OU est complètement opposé à l'opérateur &&. OU L'opérateur n'exécutera la deuxième commande que si la première commande échoue. Prenons maintenant un exemple :
$ ping -c 5 local || df -h ping: unknown host local Filesystem Size Used Avail Use% Mounted on udev 966M 0 966M 0% /dev tmpfs 199M 12M 187M 6% /run /dev/sda1 18G 5.3G 12G 32% / tmpfs 992M 212K 992M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 992M 0 992M 0% /sys/fs/cgroup tmpfs 199M 60K 199M 1% /run/user/1000
Comme vous pouvez le voir ci-dessus, la deuxième commande exécutée, c'est-à-dire "df -h" car la première commande a échoué.
3. ET &OU Opérateur (&&et ||)
La combinaison de l'opérateur &&et de l'opérateur OR (||) est assez intéressante et vous donnera une belle sortie si vous l'utilisez correctement. La combinaison de ces 2 opérateurs comme l'instruction if…else en programmation. Prenons un exemple pour que vous ayez plus d'idées à ce sujet :
Exemple :1
Ici, j'ai essayé de réussir la première commande et après une exécution réussie de la première commande, nous recevrons un message Répertoire créé avec succès.
$ mkdir data && echo "Directory created successfully" || echo "Directory creation failed" Directory created successfully
Comme vous pouvez le voir ci-dessus, notre première commande a été exécutée avec succès, nous pouvons donc obtenir le message requis.
Exemple :2
Ici, j'ai essayé d'échouer la première commande et après l'échec de la première commande, nous recevrons un message Échec de la création de l'utilisateur.
$ useradd helpdesk && echo "User created successfully" || echo "User creation failed" useradd: user 'helpdesk' already exists User creation failed
Comme vous pouvez le voir ci-dessus, notre première commande a échoué, nous pouvons donc obtenir le message requis.
4. Opérateur PIPE (|)
La ligne de commande Fourth Bash Shell Chaining Operators (opérateur Linux) est l'opérateur PIPE (|). PIPE est une sorte d'opérateur qui peut être utilisé pour afficher la sortie de la première commande en prenant l'entrée de la seconde commande. Par exemple, vous souhaitez vérifier tous les processus système en cours d'exécution à l'aide de la commande ps -ef. mais comme la liste des processus est si longue qu'elle ne peut pas être couverte dans un seul écran. Dans ce cas, vous pouvez utiliser l'opérateur de filtre avec la commande more. Reportez-vous à la commande ci-dessous :
$ ps -ef | more UID PID PPID C STIME TTY TIME CMD 0 1 0 0 19Oct18 ?? 28:26.69 /sbin/launchd 0 47 1 0 19Oct18 ?? 0:39.18 /usr/sbin/syslogd 0 48 1 0 19Oct18 ?? 0:18.18 /usr/libexec/UserEventAgent (System) 0 51 1 0 19Oct18 ?? 0:15.91 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld 0 52 1 0 19Oct18 ?? 0:34.08 /usr/libexec/kextd 0 53 1 0 19Oct18 ?? 4:35.44 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd 55 58 1 0 19Oct18 ?? 0:02.25 /System/Library/CoreServices/appleeventsd --server 0 59 1 0 19Oct18 ?? 11:23.76 /usr/sbin/systemstats --daemon 0 61 1 0 19Oct18 ?? 0:40.65 /usr/libexec/configd 0 62 1 0 19Oct18 ?? 6:05.79 /System/Library/CoreServices/powerd.bundle/powerd 0 63 1 0 19Oct18 ?? 1:16.99 /Library/PrivilegedHelperTools/com.80pct.FreedomHelper 0 67 1 0 19Oct18 ?? 3:01.31 /usr/libexec/logd ...
5. Opérateur point-virgule (;)
La cinquième ligne de commande du shell Bash Chaining Operators (opérateur Linux) est l'opérateur point-virgule (;). L'opérateur point-virgule exécute plusieurs commandes à la fois de manière séquentielle comme il est mentionné et fournit une sortie sans dépendre du succès et de l'échec d'autres commandes telles que l'opérateur &&et l'opérateur OU (||). Regardez l'exemple ci-dessous :
$ ping -c 5 localhost ; ifconfig ens33 ; df -h PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.063 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.091 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.085 ms 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.086 ms 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.086 ms --- localhost ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4091ms rtt min/avg/max/mdev = 0.063/0.082/0.091/0.011 ms ens33 Link encap:Ethernet HWaddr 00:0c:29:ff:cd:2e inet addr:192.168.43.185 Bcast:192.168.43.255 Mask:255.255.255.0 inet6 addr: 2405:204:f017:75dd:65af:f027:85c2:88eb/64 Scope:Global inet6 addr: 2405:204:f017:75dd:f076:72b8:fd36:757f/64 Scope:Global inet6 addr: fe80::b396:d285:b5b3:81c3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:146608 errors:0 dropped:0 overruns:0 frame:0 TX packets:78275 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:188124508 (188.1 MB) TX bytes:6912561 (6.9 MB) Filesystem Size Used Avail Use% Mounted on udev 966M 0 966M 0% /dev tmpfs 199M 12M 187M 6% /run /dev/sda1 18G 5.3G 12G 32% / tmpfs 992M 212K 992M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 992M 0 992M 0% /sys/fs/cgroup tmpfs 199M 60K 199M 1% /run/user/1000
6. Opérateur d'esperluette (&)
Le sixième opérateur de chaînage de la ligne de commande du shell Bash (opérateur Linux) est l'opérateur esperluette (&). Ampersand Operator est une sorte d'opérateur qui exécute des commandes données en arrière-plan. Vous pouvez utiliser cet opérateur pour exécuter plusieurs commandes à la fois.
L'avantage de cet opérateur est qu'il ne vous laisse pas attendre d'utiliser l'invite du shell jusqu'à ce que la commande donnée soit terminée. Par exemple, vous envoyez un ping à www.thegeekdiary.com avec 50 paquets. car vous savez qu'il faudra un certain temps pour terminer les 50 paquets. Sans utiliser Ampersand Operator, vous devez attendre que les 50 paquets soient terminés pour exécuter une autre commande, mais en utilisant cet opérateur, vous pouvez utiliser l'invite du shell et la commande actuelle, c'est-à-dire que le ping s'exécutera en arrière-plan et c'est la beauté de Ampersand Operator. /P>
$ ping -c 50 localhost &
Vous pouvez également exécuter plusieurs commandes à l'aide de Ampersand Operator. Reportez-vous à la commande ci-dessous.
$ ping -c 5 localhost & df -h & [1] 25962 [2] 25963 $ PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.052 ms Filesystem Size Used Avail Use% Mounted on udev 966M 0 966M 0% /dev tmpfs 199M 12M 187M 6% /run /dev/sda1 18G 5.3G 12G 32% / tmpfs 992M 212K 992M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 992M 0 992M 0% /sys/fs/cgroup tmpfs 199M 56K 199M 1% /run/user/1000 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.091 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.070 ms 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.091 ms 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.117 ms --- localhost ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4072ms rtt min/avg/max/mdev = 0.052/0.084/0.117/0.022 ms
Comme vous pouvez le voir ci-dessus, la sortie des deux commandes arrive simultanément.