Búsqueda de sitios web

10 operadores de encadenamiento útiles en Linux con ejemplos


Encadenar 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 escribir breves scripts de shell en el propio shell y ejecutarlos directamente desde la terminal. El encadenamiento permite automatizar el proceso.

Además, una máquina desatendida puede funcionar sistemáticamente con la ayuda de operadores encadenados.

Este artículo tiene como objetivo arrojar luz sobre los operadores de encadenamiento de comandos utilizados con frecuencia. Proporciona descripciones breves y los ejemplos correspondientes que pueden mejorar su productividad y permitirle escribir código conciso y significativo al mismo tiempo que reduce la carga del sistema en ocasiones.

1. Operador Ampersand (&): ejecutar el comando de Linux en segundo plano

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 único comando de Linux llamado "ping" en segundo plano:

ping -­c5 linux-console.net &

Ejecute dos o varios comandos apt en segundo plano, simultáneamente:

apt update & apt upgrade &

2. Operador de punto y coma (;): ejecutar varios comandos

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.

apt update ; apt upgrade ; mkdir test

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

3. Operador AND (&&): ejecute el segundo comando en caso de éxito

El Operador AND (&&) ejecutaría el segundo comando solo, si la ejecución del primer comando TUCCEE, es decir, el estado de salida del El 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 linux-console.net usando el comando links, en la terminal, pero antes de eso, necesito verificar si el host está activo o no.

ping -c3 linux-console.net && links linux-console.net

4. Operador OR (||) – Ejecución de comando condicional

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

Por ejemplo, quiero ejecutar 'apt update' desde una cuenta no root y si el primer comando falla, entonces el segundo comando 'links linux-console.net' ejecutará.

apt update || links linux-console.net

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 'links linux-console.net'.

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

mkdir test || links linux-console.net

Aquí, el usuario crea una carpeta 'test' en su directorio de inicio, para la cual el usuario tiene permiso. El comando se ejecutó exitosamente dando un estado de salida '0' y, por lo tanto, la última parte del comando no se ejecuta.

5. Operador NOT (!): Ejecución selectiva de comandos

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

mkdir tecmint 
cd tecmint

A continuación, cree varios tipos de archivos en la carpeta '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'.

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' de una vez, de forma inteligente utilizando el comando rm.

rm -r !(*.html)

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

ls 

a.html  b.html

6. Operador AND – OR (&& – ||) – Ejecución condicional de comandos

El operador anterior es una combinación de operador 'AND' y 'OR'. Es muy parecido a una declaración "si-else".

Por ejemplo, hagamos un ping a linux-console.net, si el éxito repite 'Verificado', de lo contrario repite 'Host Down'.

ping -c3 linux-console.net && echo "Verified" || echo "Host Down"

Resultado de muestra:

PING linux-console.net (212.71.234.61) 56(84) bytes of data. 
64 bytes from linux-console.net (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- linux-console.net 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 e intente el mismo comando nuevamente.

ping -c3 linux-console.net && echo "verified" || echo "Host Down"

Resultado de muestra:

ping: unknown host linux-console.net 
Host Down

7. Operador de PIPE (|): procesamiento de salida simplificado

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

ls -l | less

drwx------  tecmint tecmint  4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:35 2023 bin
drwxr-xr-x  root    root     4.0 KB Wed Nov 24 22:05:09 2021 DEBIAN
drwxrwxr-x  tecmint tecmint  4.0 KB Sat Nov 18 12:32:49 2023 Desktop
drwx--x---+ tecmint tecmint  100 KB Fri Dec  8 12:00:49 2023 Downloads
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 10:25:07 2023 llpp
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:26:46 2023 MyImages
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 14:55:42 2023 Obsidian Vault
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:32 2023 opt
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:46:54 2023 php
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 15:54:33 2023 tar_examples
.rw-rw-r--  tecmint tecmint   73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png
.rw-rw-r--  tecmint tecmint  2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts
.rw-rw-r--  tecmint tecmint   41 KB Thu Nov 23 11:34:33 2023 Create-Users-in-Linux.png
...

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, verifique si un directorio 'bin' está disponible o no, y genere el resultado correspondiente.

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

9. Operador de precedencia(): gestión del orden de ejecución del comando

El operador () permite ejecutar comandos en orden de prioridad.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

En el pseudocomando anterior, ¿qué pasa si falla el Command_x1? Ninguno de los Command_x2, Command_x3, Command_x4 se ejecutaría, para esto utilizamos 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 aún así Command_x3 y Command_x4 se ejecutan dependiendo del estado de salida de Command_x3.

10. Operador de concatenación (\) – Concatenación de comandos multilínea

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

nano test\(1\).txt

Eso es todo por ahora. Muy pronto publicaré otro artículo interesante. Hasta entonces Estén atentos, saludables y conectados a Tecmint. No olvides dar tus valiosos comentarios en nuestra sección de comentarios.