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):
- Operador &&(Operador AND)
- Operador OR (||)
- Operador AND &OR (&&y ||)
- Operador de PIPE (|)
- Operador punto y coma (;)
- 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.