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 /homee incluso si el cdcomando falla ( /homeno existe, no tiene permiso para atravesarlo, etc.), se ejecutará ls -al.
cd /home && ls -al
Esto solo se ejecutará ls -alsi cd /homefue 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 lsen el directorio actual porque cd /fakedirfallará 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 lsse 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 ./*