Respuestas:
El ;
justo separa un comando de otro. El &&
dice solo ejecuta el siguiente comando si el anterior fue exitoso
cd /home; ls -al
Esto lo hará cd /home
e incluso si el cd
comando falla ( /home
no existe, no tiene permiso para atravesarlo, etc.), se ejecutará ls -al
.
cd /home && ls -al
Esto solo se ejecutará ls -al
si cd /home
fue exitoso.
a && b
si a devuelve un código de salida cero, entonces se ejecuta b .
a || b
si a devuelve un código de salida distinto de cero, entonces b se ejecuta.
a ; b
a se ejecuta y luego se ejecuta b .
cd /fakedir; ls -al
Se ejecuta ls
en el directorio actual porque cd /fakedir
fallará y el shell ignorará el estado de salida que no es cero.
cd /fakedir && ls -al
Debido a que el &&
operador solo continuará si el comando anterior salió normalmente (estado de cero), no ls
se realizará ninguna operación.
Hay otros operadores, como los &
que serán el fondo de un proceso. Aunque a menudo se coloca al final de un comando, se puede poner en el medio de una cadena.
;
es realmente peligroso (al menos con el comando rm), por ejemplocd /some/dir; rm -fr ./*
. Entonces, con una operación tan destructiva, debe asegurarse de estar en el lugar correcto antes de ejecutar rm. El comando correcto escd /some/dir && rm -fr ./*