Cómo automatizar instancias de terminal de inicio para tareas específicas

10

Estoy revisando algunos tutoriales de programación y para cada sesión, tengo que iniciar al menos 3 ventanas de terminal (una para una cola de archivo de registro, una para probar la salida, otra para ejecutar varios comandos de shell, etc.)

En este momento, los inicio a todos manualmente: haga clic en el icono Terminal, cd en la carpeta correcta, escriba los comandos y cambie el título de la ventana a algo significativo.

¿Hay alguna manera de escribir un guión o algo que automatice eso para mí? Y si es así, ¿cómo?

(Estoy bien con no obtener un guión completo como respuesta. Un puntero donde comenzar a leer también funcionaría).

Adam Lear
fuente

Respuestas:

9

Como estás haciendo clic en el ícono Terminal, supongo que lo estás usando gnome-terminal.

Obtuve una lista de opciones usando gnome-terminal --helpen la línea de comando y leyendo desde allí.

A partir de la respuesta de Maco, podría sugerir algo como esto:

gnome-terminal --window --title=Log -e "tail -f /var/log/syslog" --window --title=Output --working-directory=output --window --active --title=Dev --working-directory=dev/project

Este ejemplo inicia tres ventanas (aunque podría pasar --tabpor pestañas) y establece los directorios de trabajo (relativos al inicio) y los títulos para cada uno, inicia el tailcomando en uno y activa la tercera ventana.

Por supuesto, es posible que prefiera usar líneas separadas para iniciar cada ventana, especialmente si tiene muchos argumentos.

Otra cosa útil que puede hacer, una vez que tenga sus ventanas arregladas a su gusto, es usar

gnome-terminal --save-config=FILE

Esto crea un archivo de configuración con información sobre todas las ventanas y pestañas abiertas del terminal (incluidos los títulos, directorios de trabajo, etc.). Al iniciar gnome-terminal con la --load-configopción, se recreará su diseño.

A muchos desarrolladores que trabajan con múltiples terminales les gusta usar Terminator, ya que agrega características como un diseño de cuadrícula y métodos abreviados de teclado.

jbowtie
fuente
¿Hacerlo de esta manera con la bandera -e hará que la ventana se cierre tan pronto como se ejecute el comando? Y si es así, ¿es posible hacer que la ventana permanezca abierta?
fem
8

Cualquier emulador de terminal que esté utilizando debería poder aceptar un comando como argumento. Por ejemplo:

gnome-terminal -e "tail -f /var/log/syslog"

Simplemente agregue dichos comandos a su inicio automático en Sistema -> Preferencias -> Sesiones (Ubuntu) o Configuración del sistema -> Inicio automático (Kubuntu)

maco
fuente
4

También podría automatizar eso usando un script. Recomiendo leer la Guía avanzada de secuencias de comandos de Bash o el CÓMO de programación de Bash, junto con la página de manual de cualquier terminal que esté utilizando.

Aquí hay un ejemplo simple:

$ vi your-script
#!/bin/bash
gnome-terminal -e "tail -f /var/log/syslog"
gnome-terminal --working-directory=/foo/bar
gnome-terminal --whatever-else

Entonces solo hazlo ejecutable:

$ chmod +x your-script
anónimo
fuente
no necesitas a exectodos esos?
maco
Sí, a menos que gnome-terminal ya se esté ejecutando, el comando simplemente abre una nueva ventana para el otro proceso en ejecución y luego se cierra.
LassePoulsen