GNU/Linux >> Tutoriels Linux >  >> Linux

6 opérateurs de chaînage de ligne de commande Bash Shell sous Linux

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) :

  1. Opérateur &&(opérateur AND)
  2. Opérateur OU (||)
  3. Opérateur AND &OR (&&et ||)
  4. Opérateur PIPE (|)
  5. Opérateur point-virgule (;)
  6. 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.


Linux
  1. Comment effacer l'historique de la ligne de commande BASH sous Linux

  2. Alias ​​de ligne de commande dans le shell Linux

  3. Comment configurer le shell bash restreint sous Linux

  4. [ :Opérateur inattendu en programmation shell

  5. Définir la fonction dans la ligne de commande unix/linux (par exemple BASH)

Commande source sous Linux

Maîtrisez la ligne de commande Linux

Commande source sous Linux

Principes de base de la ligne de commande Linux :sudo

Comment utiliser la commande Declare dans Linux Bash Shell

Commande source sur Linux expliquée