¿Cómo puedo hacer un script que abra las ventanas de terminal y ejecute comandos en ellas?

110

Tengo tres scripts que necesito ejecutar cuando inicio mi máquina Ubuntu, inician los servicios que uso en mi entorno de desarrollo.

Para hacerlo, abro manualmente tres terminales y escribo los comandos.

¿Hay alguna forma de crear un script que abra tres terminales y ejecute un comando en cada uno de estos? (Cada comando debe estar en una ventana de terminal separada para que pueda ver su salida).

    
pregunta JSBach 02.06.2011 - 21:58

5 respuestas

112
gnome-terminal -e command

o

xterm -e command

o

konsole -e command

Bastante

terminal -e command

Para que la terminal permanezca cuando el comando salga:

En konsole hay un indicador --noclose .

En xterm, hay un indicador -hold .

En gnome-terminal , vaya a Editar - & gt; Preferencias de perfil - & gt; Título . Haga clic en la pestaña Comando . Seleccione Sostenga el terminal en el menú desplegable etiquetado Cuando el comando sale . Debe crear un nuevo perfil para eso y ejecutar con

gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
    
respondido por el nickguletskii 02.06.2011 - 22:03
47

En lugar de codificar gnome-terminal , konsole , etcétera, usa el sistema Alternativas. El programa que ejecuta el emulador de terminal predeterminado es:

x-terminal-emulator

En mi sistema, abre una nueva instancia de Konsole cada vez que ejecuto este comando.

Afortunadamente, los terminales parecen soportar la opción -e para ejecutar un comando (lo verifiqué para konsole y gnome-terminal ). Los argumentos posteriores al comando se pasan al comando invocado. Bash se niega a permanecer abierto en mi terminal, se necesita una secuencia de comandos adicional para obtener una terminal:

#!/bin/sh
"$@"
exec "$SHELL"

Si ha guardado el script anterior como /home/user/hacky y lo ha convertido en ejecutable, podría ejecutar los scripts con:

x-terminal-emulator -e /home/user/hacky your-script optional arguments here

Se requiere la ruta completa y /home/user/hacky tiene que ser ejecutable.

Mi intento anterior de ejecutar un script en una nueva ventana de terminal se puede encontrar en revisión # 2 , fue antes Me di cuenta de que los argumentos se pueden pasar a x-terminal-emulator .

    
respondido por el Lekensteyn 02.06.2011 - 22:29
7

Muy simple -

#!/bin/bash

/etc/init.d/ccpd status

Esto es suficiente para otros comandos que no necesitan mostrar nada en la terminal. Pero aquí uno tiene que ver el estado que se muestra.
Por lo tanto, se debe ejecutar en una ventana de terminal

#!/bin/bash

gnome-terminal -e "/etc/init.d/ccpd status"  --window-with-profile=NAMEOFTHEPROFILE

La otra publicación pretendía que [] fuera un marcador de posición

Aquí "NAMEOFTHEPROFILE" debe reemplazarse por el nombre del perfil que "contiene el terminal cuando el comando sale".

    
respondido por el Karthik T 23.01.2013 - 10:31
1

comentando la respuesta de Lekensteyn. Sé que esta es una publicación anterior, pero para cualquiera que la encuentre útil (como lo hice) En lugar de hacer otro "script hacky" con solo poner una función dentro del script que está llamando

hacky_function()
{
"$@"
exec "$SHELL"
}

Llame a su secuencia de comandos con "argumentos opcionales xcky-emulator -e / ruta / a / script hacky_function aquí"

No olvide poner "$ @" al final del script

    
respondido por el Sruli 06.12.2017 - 21:11
-2

Utiliza el comando de pantalla y -d separarse de una sesión de pantalla existente y volver a conectar aquí -m fuerza una nueva sesión de pantalla -S crear una sesión nombrada en lugar de usar el nombre predeterminado

    
respondido por el Jack Heath 13.04.2014 - 22:00

Lea otras preguntas en las etiquetas