27 votos

¿Cómo ejecutar varios comandos seguidos con una sola petición al terminal (sin usar un archivo)?

Podría (1) preparar un archivo con comandos escritos separados por línea final, (2) hacerlo ejecutable, (3) ejecutarlo desde un gestor de sistema de archivos o la terminal.

Pero esto es ridículo para los conjuntos de comandos que no se repiten y que se repiten cada vez.

¿Puedo escribir esos comandos en el terminal en una sola petición?

No sé el carácter de fin de línea para el terminal - Ctrl, Shift o Alt con Enter no funciona.

1 votos

En una línea de comandos, los comandos pueden separarse con un punto y coma.

35voto

MrVaykadji Puntos 2946

Puede separar los comandos con && o ; .

  • && sólo ejecuta el siguiente comando si el anterior salió con el estado 0 (tuvo éxito) :

    command1 && command2 && command3
  • ; ejecuta todos los comandos, incluso si el anterior sale con un estado no nulo :

    command1; command2; command3

Puede combinar estos separadores como desee.

7 votos

Para command1 && command2 El comando2 sólo se ejecutará si el comando1 tiene éxito.

0 votos

Buenas discusiones, posts relevantes/similares: askubuntu.com/questions/334994/ stackoverflow.com/questions/13077241/

0 votos

@souravc : He hecho una edición, gracias, he aprendido algo.

9voto

Radu Rădeanu Puntos 62671

Si está interesado en escribir cada comando en su propia línea en una sola solicitud, puede utilizar el siguiente método:

  • Comience su solicitud (primera línea) con if :; then (esto significa: si es verdadero, entonces hazlo) y pulsa Enter su indicador cambiará ahora en > y no se ejecutará nada.

  • Escriba sus comandos, cada uno seguido de Enter

  • Termine su solicitud con fi (fin de lo anterior if condición) y pulse Enter . Ahora todos sus comandos se ejecutarán en el orden dado.

Ejemplo:

radu@Radu: ~ $ if :; then
> echo 'something'
> echo 'something else'
> echo 'List current directory contents:'
> ls
> echo 'Change current directory with root directory:'
> cd
> #finish
> fi
something
something else
List current directory contents:
Backups            Desktop           forma3d  Public      Untitled txt.txt~
bin                Documente         Music    Templates   Videos
configuration.php  examples.desktop  passwd~  tmp~
Downloads          file~             Poze     Ubuntu One
Change current directory with root directory:
radu@Radu: / $

1 votos

if true; then puede ser más claro de leer si así se desea. : puede confundirse con el ; a primera vista.

4voto

minerz029 Puntos 10555

Primero, pon un { en su propia línea.
A continuación, introduzca sus comandos.
Entonces, pon un } en una nueva línea y pulse Enter . Sus órdenes se ejecutarán.

Ejemplo:

{
echo list
echo of
echo commands
echo to run at once
}

que se imprimirá (todo a la vez, sin ningún aviso intermedio):

list
of
commands
to run at once

Como nota al margen, { .. } es la sintaxis de agrupación de comandos de Bash. Suele ser útil junto con && o || ("y", y "o" respectivamente)

0 votos

¿Es lo mismo que if :; then ¿ya se ha mencionado? ¿O es ligeramente diferente?

1 votos

@MrVaykadji Es el mismo resultado, pero un método diferente. if : ejecuta una prueba sobre el comando null, que siempre devolverá true. { .. } simplemente agrupa los comandos. Personalmente encuentro { .. } más fácil de recordar.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: