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.
10 operadores de encadenamiento en Linux
Este artículo tiene como objetivo arrojar luz sobre los uso frecuente operadores de encadenamiento de comandos de , 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.
- 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:
agcapa@localhost:~$ ping c5 www.agcapa.com &
Ejecute dos comandos en segundo plano, simultáneamente:
root@localhost:/home/agcapa# apt-get update & apt-get upgrade &
- 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.
root@localhost:/home/agcapa# apt-get update ; apt-get upgrade ; mkdir test
La combinación de comandos anterior ejecutará primero la actualización instrucción de , luego la actualización instrucción de y finalmente creará un ‘ prueba directorio de ‘ en el directorio de trabajo actual.
- Operador AND (&&)
El operador AND ( && ) ejecutará 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 agcapa.com usando el comando de enlaces , en la terminal, pero antes necesito verificar si el host está en vivo o no .
root@localhost:/home/agcapa# ping -c3 www.agcapa.com && links www.agcapa.com
- Operador OR (||)
El operador OR ( || ) es muy parecido a una ‘ else instrucción ‘ en 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, el segundo ‘links www.agcapa.com se ejecutará comando ‘.
agcapa@localhost:~$ apt-get update || links agcapa.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 el último comando ‘ links agcapa.com , se ejecuta ‘.
¿Qué pasa si el primer comando se ejecuta con éxito, con un estado de salida ‘ 0 ‘? ¡Obviamente! El segundo comando no se ejecutará.
agcapa@localhost:~$ mkdir test || links agcapa.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.
- NO operador (!)
El operador NOT ( ! ) Es muy parecido a una » excepto declaración «. Este comando ejecutará todo excepto la condición proporcionada. Para entender esto, cree un directorio ‘ agcapa ‘ en su directorio de inicio y ‘ cd ‘ en él.
agcapa@localhost:~$ mkdir agcapa agcapa@localhost:~$ cd agcapa
A continuación, cree varios tipos de archivos en la carpeta ‘ agcapa ‘.
agcapa@localhost:~/agcapa$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html
Vea que hemos creado todos los archivos nuevos dentro de la carpeta ‘ agcapa ‘.
agcapa@localhost:~/agcapa$ 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 una manera inteligente.
agcapa@localhost:~/agcapa$ rm -r !(*.html)
Solo para verificar, última ejecución. Enumere todos los archivos disponibles usando el comando ls .
agcapa@localhost:~/agcapa$ ls a.html b.html
- Operador Y – O (&& – ||)
El operador anterior es en realidad una combinación de operador ‘ Y ‘ y ‘ O ‘. Es muy parecido a una » si-si no declaración «.
Por ejemplo, hagamos ping a agcapa.com , si el éxito se hace eco de ‘ Verificado ‘, de lo contrario se hace eco de ‘ Host inactivo ‘.
agcapa@localhost:~/agcapa$ ping -c3 www.agcapa.com && echo «Verified» || echo «Host Down»
Salida de muestra
PING www.agcapa.com (212.71.234.61) 56(84) bytes of data. 64 bytes from www.agcapa.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 64 bytes from www.agcapa.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 64 bytes from www.agcapa.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms — www.agcapa.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.
agcapa@localhost:~/agcapa$ ping -c3 www.agcapa.com && echo «verified» || echo «Host Down»
Salida de muestra
ping: unknown host www.agcapa.com Host Down
- Operador de TUBERÍA (|)
Este PIPE operador 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.
agcapa@localhost:~$ ls -l | less
- 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 la salida correspondiente.
agcapa@localhost:~$ [ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.
- 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é si pasa 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 .
- 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 .
agcapa@localhost:~/Downloads$ nano test\(1\).txt