GNU/Linux >> Tutoriales Linux >  >> Linux

6 Operadores de encadenamiento de línea de comandos de Bash Shell en Linux

Introducción

En este artículo, le explicaré 6 operadores de encadenamiento de la línea de comandos de Bash shell (operador de Linux). Ahora analicemos qué es el operador de encadenamiento. El operador de encadenamiento es algo que ayuda a ejecutar múltiples comandos a la vez como si ejecutáramos un script y la tarea se completa automáticamente. Por lo general, las personas usan operadores de encadenamiento de línea de comando de shell Bash (operador de Linux) en scripts de shell, pero también podemos usar estos operadores en el indicador de shell.

Aquí vamos a discutir a continuación los operadores de encadenamiento de la línea de comando de Bash Shell (operador de Linux):

  1. Operador &&(Operador AND)
  2. Operador OR (||)
  3. Operador AND &OR (&&y ||)
  4. Operador de PIPE (|)
  5. Operador punto y coma (;)
  6. Operador de Y comercial (&)

Ahora hablemos de todos y cada uno de los operadores uno por uno.

1. Operador &&(Operador AND)

La sintaxis para usar el operador AND es:

# command 1 && command 2

El operador AND ejecutará el segundo comando solo si el primer comando se ejecuta correctamente. Ahora eche un vistazo a la sintaxis anterior. Aquí el comando 2 se ejecutará solo si el comando 1 se ejecuta con éxito. Por ejemplo:

Aquí, como puede ver a continuación, el primer comando se completó con éxito, por lo tanto, se ejecutó el segundo comando df -h.

$ 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

Ahora probemos el operador AND de otra manera. Aquí fallaré el primer comando y veré si el segundo comando se ejecuta o no.

$ ping -c 5 local && df -h
ping: unknown host local

Como puede ver arriba, el primer comando falló, por lo tanto, el segundo comando no se ejecutó.

2. Operador O (||)

En nuestra lista, la línea de comando Second Bash Shell Chaining Operators (operador Linux) es OR Operator. La sintaxis para usar el operador OR es:

# command 1 || command 2

El Operador OR es completamente opuesto al Operador &&. O El operador ejecutará el segundo comando solo si falla el primer comando. Ahora tomemos un ejemplo:

$ 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

Como puede ver arriba, el segundo comando se ejecutó, es decir, "df -h" ya que el primer comando falló.

3. Operador AND &OR (&&y ||)

La combinación de Operador &&y Operador OR (||) es bastante interesante y le dará un buen resultado si lo usa correctamente. La combinación de estos 2 operadores como si… otra declaración en programación. Tomemos un ejemplo para que tenga más idea sobre esto:

Ejemplo:1

Aquí traté de ejecutar correctamente el primer comando y después de una ejecución exitosa del primer comando, obtendremos un mensaje Directorio creado con éxito.

$ mkdir data && echo "Directory created successfully" || echo "Directory creation failed"
Directory created successfully

Como puede ver arriba, nuestro primer comando se ejecutó con éxito, por lo tanto, podemos obtener el mensaje requerido.

Ejemplo:2

Aquí intenté fallar el primer comando y después de fallar el primer comando obtendremos un mensaje Falló la creación del usuario.

$ useradd helpdesk  && echo "User created successfully" || echo "User creation failed"
useradd: user 'helpdesk' already exists
User creation failed

Como puede ver arriba, nuestro primer comando falló, por lo tanto, podemos obtener el mensaje requerido.

4. Operador TUBO (|)

Los operadores de encadenamiento de la línea de comando del cuarto shell Bash (operador de Linux) es el operador PIPE (|). PIPE es un tipo de operador que se puede usar para mostrar la salida del primer comando tomando la entrada del segundo comando. Por ejemplo, desea verificar todos los procesos del sistema que se están ejecutando actualmente mediante el comando ps -ef. pero como la lista de procesos es tan larga que no se puede cubrir en una sola pantalla. En ese caso, puede usar el Operador de filtro con el comando más. Consulte el siguiente comando:

$ 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. Operador punto y coma (;)

Quinto Operador de encadenamiento de la línea de comando de shell Bash (operador de Linux) es Operador de punto y coma (;). El operador de punto y coma ejecuta varios comandos a la vez de forma secuencial como se menciona y proporciona resultados sin depender del éxito o el fracaso de otros comandos como el operador &&y el operador OR (||). Eche un vistazo al siguiente ejemplo:

$ 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. Operador de Y comercial (&)

El sexto operador de encadenamiento de la línea de comandos del shell Bash (operador de Linux) es el operador Ampersand (&). Ampersand Operator es un tipo de operador que ejecuta comandos dados en segundo plano. Puede utilizar este operador para ejecutar varios comandos a la vez.

La ventaja de este operador es que no le permite esperar para usar el indicador de shell hasta que se complete el comando dado. Por ejemplo, hace ping a www.thegeekdiary.com con 50 paquetes. como saben, llevará algún tiempo completar los 50 paquetes. Sin usar el operador Ampersand, debe esperar hasta que se completen los 50 paquetes para ejecutar otro comando, pero al usar este operador puede usar el indicador de shell y el comando dado actual, es decir, el ping se ejecutará en segundo plano y esa es la belleza del operador Ampersand.

$ ping -c 50 localhost &

También puede ejecutar múltiples comandos usando el operador Ampersand. Consulte el comando a continuación.

$ 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

Como puede ver arriba, la salida de ambos comandos viene simultáneamente.


Linux
  1. Cómo borrar el historial de línea de comandos BASH en Linux

  2. 5 Finalización estándar disponible en la línea de comandos de Linux Bash

  3. Cómo configurar Bash Shell restringido en Linux

  4. Ejemplos de comandos chsh en Linux

  5. Bash si está en una sola línea

Comando fuente en Linux

Domina la línea de comandos de Linux

Comando fuente en Linux

Conceptos básicos de la línea de comandos de Linux:sudo

Cómo usar el comando Declare en Linux Bash Shell

Explicación del comando fuente en Linux