En los tutoriales y procedimientos a menudo veo comandos combinados. Por ejemplo,
sudo apt-get update && sudo apt-get install pyrenamer
Parece que hay cuatro conectores posibles: &
, &&
, ||
y ;
. Aunque el &
conector es claro para mí (envía un proceso a un segundo plano y deja el terminal disponible), no está claro cuál es la diferencia entre &&
y ;
. Y no lo supe ||
hasta el comentario de Kaya.
Las siguientes preguntas tratan la diferencia entre los dos conectores, pero lo hacen principalmente en los comentarios:
Aquí hay una serie de preguntas relacionadas:
- ¿Cuál es la diferencia entre
;
y&&
? - ¿Cuándo deberías usarlos respectivamente? Sería bueno ver algunos casos de uso: si quiero ejecutar un comando y después de que apague mi computadora, ¿qué conector debo elegir?
- ¿Cuáles son sus ventajas y peligros ? Robie Basak menciona en un comentario a esta respuesta que un comando como
cd /somewhere_else; rm -Rf *
puede tener consecuencias destructivas si el primer elemento en la cadena de comandos falla, por ejemplo. - Si es relevante, ¿de dónde vienen?
set -e
detendrá el script en caso de falla como si todos los comandos estuvieran conectados &&
.
||
es el mismo que&&
excepto que solo ejecuta el segundo comando si el primero salió con un estado distinto de cero (sin éxito).