10 operadores de encadenamiento útiles en Linux con ejemplos prácticos


El encadenamiento de comandos de Linux significa combinar varios comandos y hacer que se ejecuten en función del comportamiento del operador utilizado entre ellos. El encadenamiento de comandos en Linux es algo así como si estuviera escribiendo scripts de shell cortos en el propio shell y ejecutándolos directamente desde la terminal. El encadenamiento permite automatizar el proceso. Además, una máquina desatendida puede funcionar de una manera mucho más sistemática con la ayuda de operadores encadenados.

Este artículo tiene como objetivo arrojar luz sobre los operadores de encadenamiento de comandos de uso frecuente, con descripciones breves y ejemplos correspondientes que seguramente aumentarán su productividad y le permitirán escribir códigos breves y significativos además de reducir la carga del sistema, en ocasiones.

1. Operador Ampersand (&)

La función de "&" es hacer que el comando se ejecute en segundo plano. Simplemente escriba el comando seguido de un espacio en blanco y "&". Puede ejecutar más de un comando en segundo plano, de una sola vez.

Ejecute un comando en segundo plano:

[email protected]:~$ ping ­c5 www.tecmint.com &

Ejecute dos comandos en segundo plano, simultáneamente:

[email protected]:/home/tecmint# apt-get update & apt-get upgrade &

2. Operador de punto y coma (;)

El operador de punto y coma permite ejecutar varios comandos de una sola vez y la ejecución del comando se produce de forma secuencial.

[email protected]:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test

La combinación de comandos anterior ejecutará primero la instrucción de actualización, luego la instrucción de actualización y finalmente creará un directorio de "prueba" en el directorio de trabajo actual.

3. Operador AND (&&)

El operador AND (&&) ejecutaría el segundo comando solamente, si la ejecución del primer comando TIENE ÉXITO, es decir, el estado de salida del primer comando es 0. Este comando es muy útil para verificar el estado de ejecución del último comando.

Por ejemplo, quiero visitar el sitio web tecmint.com usando el comando de enlaces, en la terminal, pero antes necesito verificar si el host está en vivo o no.

[email protected]:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com

4. Operador OR (||)

El operador OR (||) es muy parecido a una declaración "else" en la programación. El operador anterior le permite ejecutar el segundo comando solo si falla la ejecución del primer comando, es decir, el estado de salida del primer comando es "1".

Por ejemplo, quiero ejecutar "apt-get update" desde una cuenta que no sea root y si el primer comando falla, se ejecutará el segundo comando "links www.tecmint.com".

[email protected]:~$ apt-get update || links tecmint.com

En el comando anterior, dado que al usuario no se le permitió actualizar el sistema, significa que el estado de salida del primer comando es "1" y, por lo tanto, se ejecuta el último comando "enlaces tecmint.com".

¿Qué pasa si el primer comando se ejecuta correctamente, con un estado de salida "0"? ¡Obviamente! El segundo comando no se ejecutará.

[email protected]:~$ mkdir test || links tecmint.com

Aquí, el usuario crea una carpeta "prueba" en su directorio de inicio, para la cual el usuario está autorizado. El comando se ejecutó con éxito dando un estado de salida "0" y, por lo tanto, la última parte del comando no se ejecuta.

5. NO operador (!)

El operador NOT (!) Es muy parecido a una declaración "excepto". Este comando ejecutará todo excepto la condición proporcionada. Para entender esto, cree un directorio "tecmint" en su directorio de inicio y "cd" en él.

[email protected]:~$ mkdir tecmint 
[email protected]:~$ cd tecmint

A continuación, cree varios tipos de archivos en la carpeta "tecmint".

[email protected]:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

Mira, hemos creado todos los archivos nuevos dentro de la carpeta "tecmint".

[email protected]:~/tecmint$ ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

Ahora elimine todos los archivos, excepto el archivo "html", todos a la vez, de una manera inteligente.

[email protected]:~/tecmint$ rm -r !(*.html)

Solo para verificar, última ejecución. Enumere todos los archivos disponibles usando el comando ls.

[email protected]:~/tecmint$ ls 

a.html  b.html

6. Operador Y - O (&& - ||)

El operador anterior es en realidad una combinación de operador "Y" y "O". Es muy parecido a una declaración "si-si no".

Por ejemplo, hagamos ping a tecmint.com, si el éxito se hace eco de "Verificado", de lo contrario se hace eco de "Host Down".

[email protected]:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"
PING www.tecmint.com (212.71.234.61) 56(84) bytes of data. 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- www.tecmint.com 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

Ahora, desconecte su conexión a Internet y vuelva a intentar el mismo comando.

[email protected]:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"
ping: unknown host www.tecmint.com 
Host Down

7. Operador de TUBERÍA (|)

Este operador PIPE es muy útil cuando la salida del primer comando actúa como entrada del segundo comando. Por ejemplo, canalice la salida de "ls -l" a "menos" y vea la salida del comando.

[email protected]:~$ ls -l | less

8. Operador de combinación de comandos {}

Combine dos o más comandos, el segundo comando depende de la ejecución del primer comando.

Por ejemplo, compruebe si un directorio "bin" está disponible o no, y genere el resultado correspondiente.

[email protected]:~$ [ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.

9. Operador de precedencia()

El operador permite ejecutar el comando en orden de precedencia.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

En el pseudocomando anterior, ¿qué pasa si Command_x1 falla? Ninguno de los comandos Command_x2, Command_x3, Command_x4 se ejecutaría, para esto usamos el Operador de precedencia, como:

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

En el pseudocomando anterior, si Command_x1 falla, Command_x2 también falla, pero la ejecución de Command_x3 y Command_x4 depende del estado de salida de Command_x3.

10. Operador de concatenación (\)

El operador de concatenación (\) como el nombre lo especifica, se usa para concatenar comandos grandes en varias líneas en el shell. Por ejemplo, el siguiente comando abrirá el archivo de texto test (1) .txt.

[email protected]:~/Downloads$ nano test\(1\).txt

Eso es todo por ahora. Muy pronto se me ocurrirá otro artículo interesante. Hasta entonces Manténgase atento, saludable y conectado a Tecmint. No olvide darnos sus valiosos comentarios en nuestra sección de comentarios.