¿Cómo combinar múltiples comandos en la terminal?

25

Tengo los siguientes comandos.

cd import
zcat urls1.sql.gz | mysql -u root -p urls
cd /var/www/project1/
nano 1.php

A partir de ahora lo estoy ejecutando uno por uno.

¿Hay alguna manera de combinar esos comandos en una línea?

Giri
fuente
3
¿Hiciste alguna investigación para esta pregunta?
don.joey
Esa no fue mi pregunta. Es solo que medio minuto de google te hubiera dado la respuesta. Por lo tanto, me preguntaba qué había encontrado, si acaso.
don.joey
¿Qué te hace pensar que rechacé tu pregunta? Descuidaré tu ira. Como nota al margen, la pregunta "cuál es mejor: usar ;o &&ejecutar múltiples comandos en una línea" es mucho mejor, tiene más investigación y probablemente habría atraído muchos votos positivos.
don.joey
Hay una variante más genérica de esta pregunta disponible en askubuntu.com/questions/334994/… . Se ocupa exactamente de la pregunta que menciono en el comentario anterior.
don.joey
No te preocupes Giri. La esencia de la pregunta es interesante. Me tomé el esfuerzo de hacer una variante genérica.
don.joey

Respuestas:

33

Sí, separe con un punto y coma así:

dir; ls -l

La mayoría de los lanugauges / shells usan el punto y coma para indicar el final de un comando y comenzar de nuevo mientras evalúan de izquierda a derecha.

O, como recomienda @RobieBasak, use && en lugar de; para evitar accidentes de codificación.

dir && ls -l
Colyn1337
fuente
23
Es una buena idea usar en &&lugar de ;. Esto garantiza que los comandos posteriores solo se ejecuten si los comandos anteriores no han fallado. Esto evita algunas consecuencias incómodas. Por ejemplo: cd /somewhere_else; rm -Rf *podría hacer algo desastroso si /somewhere_elseno existe o si lo deletrea mal; cd /somewhere_else && rm -Rf *te protege de esto.
Robie Basak
2
La solución '&&' es tan buena que debería ser la primera recomendación en esta respuesta. Edite su respuesta y promueva la mejor respuesta al primer lugar.
Kerem Baydogan el