Icono de Terminal

Encadenamiento de comandos en Linux

 
 

En teste artículo veremos lo que se conoce como encadenamiento de comandos en GNU/Linux, que no es otra cosa que ejecutar más de un comando a la vez desde la interfaz de línea de comandos (CLI).

Índice General

  1. Introducción
  2. Ejecución secuencial: Operador (;)
  3. Ejecución condicional

 

  1. Introducción (Volver al índice General)
    Linux permite ejecutar múltiples comandos al mismo tiempo. A la ejecución de más de un comando a la vez en Linux se le conoce como encadenamiento de comandos.

    En este artículo veremos los siguientes tipos de ejecución:

    • Ejecución secuencial: En este tipo de encadenamiento de comandos, la ejecución del siguiente comando no está condicionada por el resultado del comando anterior.
    • Ejecución condicional: En este tipo de encadenamiento de comandos, la ejecución del siguiente comando si está condicionada por el resultado del comando anterior, ya sea por que ha sido exitoso o no.

     

  2. Ejecución secuencial: Operador (;) (Volver al índice General)
    En este tipo de ejecución, en lugar de escribir los comandos uno tras otro y esperar el fin de su ejecución antes de ejecutar el siguiente, es posible encadenar varios comandos en la misma orden, separándolos por un punto y coma (;).

    La sintaxis genérica para este tipo de ejecución sería la siguiente:

    $ comando1 ; comando2 ; comando3 ;...; comandoN

    Nota: Los espacios anterior y posterior al ; en la orden no son obligatorios, pero mejoran la legibilidad.

    En el encadenamiento comando1 ; comando2 ; comando3, el comando comando2 se ejecuta al terminar el comando comando1; igualmente, comando3 se ejecuta cuando comando2 ha terminado. No hay ningún vínculo entre estos tres comandos; es decir, la ejecución de un comando no está condicionada por el resultado (código de retorno) del anterior.

    Por ejemplo, instalemos el paquete synaptic, pero antes, actualicemos los repositorios e instalemos las actualizaciones pendientes, todo en una sola orden:

    $ sudo apt update ; sudo apt upgrade ; sudo apt install synaptic

    Nota: En un script del shell, el punto y coma permite presentar varias instrucciones en una misma línea.

  3.  

  4. Ejecución condicional (Volver al índice General)
    Al igual que en la ejecución secuencial, podemos ejecutar varios comandos en la misma orden, pero con la diferencia de que el comando siguiente se ejecutará en función de si el comando anterior finalizó o no satisfactoriamente. Por lo tanto, en este tipo de ejecución nos encontramos con dos condiciones que dan lugar a dos subtipos de ejecuciones condicionales.

       

    • Operador lógico Y (&&) (Volver al índice General)
      En este tipo de ejecución, si queremos que el siguiente comando se ejecute, el comando anterior ha de finalizar exitosamente. Los comandos deberán ir separados por el operador AND lógico, que es dos signos & (&&).

      La sintaxis genérica para este tipo de ejecución sería la siguiente:

      $ comando1 && comando2 && comando3 &&...&& comandoN

      En el encadenamiento comando1 && comando2 && comando3, el comando2 se ejecutará solo si el comando1 fue exitoso e igualmente, comando3 se ejecutará si el comando2 fue exitoso.

      Por ejemplo, creemos el directorio llamado midirectorio y a continuación nos situamos en dicho directorio con el comando cd:

      $ mkdir midirectorio && cd midirectorio

      El directorio mydirectorio se crea con éxito por lo que se ejecuta el comando cd.

    •  

    • Operador lógico O (||) (Volver al índice General)
      En este tipo de ejecución, si queremos que el siguiente comando se ejecute, el comando anterior no ha de finalizar exitosamente. Los comandos deberán ir separados por el operador OR lógico, que es dos signos | (||).

      La sintaxis genérica para este tipo de ejecución sería la siguiente:

      $ comando1 || comando2 || comando3 ||...|| comandoN

      En el encadenamiento comando1 || comando2 || comando3, el comando2 se ejecutará solo si el comando1 no fue exitoso e igualmente, comando3 se ejecutará si el comando2 no fue exitoso.

      Por ejemplo, supongamos que verificamos si el fichero miarchivo.txt existe, y si no existe, lo creamos. Para hacerlo, podemos ejecutar la siguiente orden:

      $ [ -f ~/miarchivo.txt ] || touch ~/miarchivo.txt

      El fichero miarchivo.txt se crea con éxito porque la orden de verificación [ -f ~/miarchivo.txt ] no es exitosa, el archivo no existe.

    •  

    • Combinar varios operadores (Volver al índice General)
      También podemos combinar varios operadores en la misma orden. Por ejemplo, centrémonos en el ejemplo del punto anterior y lo vamos a modificar de tal forma que si el fichero miarchivo.txt existe, mostraremos un mensaje indicando que el fichero existe y en caso de que no exista, crearemos el fichero. Para hacerlo, podemos ejecutar la siguiente orden:

      $ [ -f ~/miarchivo.txt ] && echo "El archivo miarchivo.txt existe" || touch ~/miarchivo.txt

Encadenamiento de comandos en Linux
 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
 
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.