Abra la pestaña mediante programación en gnome-terminal, ejecute el comando y haga que la pestaña permanezca abierta

12

Estoy tratando de escribir un comando que inicie algunas pestañas de terminal, ejecute algo en cada pestaña y haga que cada pestaña permanezca abierta después de que el comando haya terminado, para que pueda ver el resultado y escribir más comandos en cada pestaña

algo como esto:

gnome-terminal --tab -e "ls -a" --tab -e "ls"

pero el problema con esto es que las pestañas se cierran tan pronto como terminan los comandos "ls". ¿Alguien sabe cómo hacer que las pestañas permanezcan abiertas?

marca
fuente

Respuestas:

11

Gnome-terminal puede ejecutar un comando o abrir un shell, pero no ambos.

Hay una solución alternativa para hacer ambas cosas encapsulando el comando y la invocación posterior del shell en un solo comando.

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

Para obtener más alternativas, lea mi respuesta a una pregunta similar sobre el desbordamiento de la pila: /programming/3512055/avoid-gnome-terminal-close-after-script-execution/3531426#3531426

lesmana
fuente
10

Si tiene xdotoole wmctrlinstaló, entonces el siguiente script de shell podría funcionar:

#!/usr/bin/env bash

window="$(xdotool search --class gnome-terminal | head -1)"
xdotool windowfocus $window
xdotool key ctrl+shift+t
xdotool type "$*"
xdotool key Return

Lo uso así:

$ run-in-new-tab 'ls -l'

Encontré esta idea en el blog de Trustin Lee .


fuente
Gracias. Esto funciona bastante bien. Sin sleep 1embargo, tengo que agregar un después de ctrl + shift + t para que funcione. Voy a aceptar esto si nada más se acerca pronto
Sí, descubrí que tenía que sleep 2hacerlo funcionar el 100% del tiempo. Sin embargo, es una gran solución: ahora estoy abriendo 8 pestañas, que ssh en varios servidores, inician varios procesos, etc., usando esto: mi configuración de la mañana ahora está totalmente programada :)
Max Williams
En realidad wmctrlno es obligatorio.
nedim