Para mantener la descripción general, me gusta colocar varios comandos siempre en el mismo orden e iniciarlos automáticamente juntos (gradle, git, base de datos, scala-REPL, jboss ...)
-H (mantener) parece significar que el terminal no se cierra después de la finalización, pero ¿cómo termino tal proceso intencionalmente? ¿De ningún modo? De tal manera que pueda seguir usando el terminal.
Estoy usando xubuntu con xfce4-terminal y bash. ¿Existe una mejor solución GUI para iniciar múltiples comandos, con la capacidad de continuar trabajando en esa ventana / pestaña?
Actualización: si no conoce estos comandos: Jboss y gradle producen continuamente resultados, que no desea que se mezclen en el mismo terminal. Y a veces deben interrumpirse con ^ C y reiniciarse. No me gusta volver a abrir un término xfce4 y navegar al directorio en el que necesito actuar.
La base de datos y scala-REPL son interactivos, por lo que no tiene sentido iniciarlos en segundo plano.
Mi script de inicio actual simplemente navega a los directorios deseados y abre todas las pestañas en el orden correcto para encontrarlas siempre en la misma posición, nombrando cada pestaña para su propósito:
xfce4-terminal -T eclipse --working-directory=/home/stefan/oximity -e "/opt/eclipse/eclipse" \
--tab -T arandr --working-directory=/home/stefan/oximity -e "arandr /home/stefan/.screenlayout/oximity.sh" \
--tab -T bash --working-directory=/home/stefan/oximity \
--tab -T gradle --working-directory=/home/stefan/oximity/med \
--tab -T git --working-directory=/home/stefan/oximity/med \
--tab -T mysql --working-directory=/opt/mini/mysql \
--tab -T jboss --working-directory=/opt/mini/jboss \
--tab -T jboss-log --working-directory=/opt/mini/jboss/standalone/log \
--tab -T scala-REPL --working-directory=/home/stefan/proj/mini/forum -e /opt/scala/bin/scala
Eclipse y arandr se separan del shell y se ejecutan en su propia ventana, por lo que funciona el parámetro -e (ejecutar). Creo que para scala-REPL funciona, ya que es el último comando de la lista.
fuente
xterm -e 'stuff;bash'
?Respuestas:
La
-H/-hold
opción es mantener abierta la ventana del emulador de terminal una vez que las aplicaciones iniciadas en ella (shell u otro) hayan salido. En ese estado, nada más puede suceder.Si desea iniciar un comando como un trabajo de un shell interactivo en el emulador de terminal xfce4-terminal y mantener el shell en ejecución y usarlo de manera interactiva después de que la aplicación haya salido,
bash
puede usar la$PROMPT_COMMAND
variable de entorno paraxfce-terminal
iniciar un shell interactivo que inicia el comando dado justo antes del primer aviso.De esa manera, los comandos son trabajos de ese shell, lo que significa que puede suspenderlos Ctrl-Zy reanudarlos más tarde
fg/bg
como si los hubiera ingresado en el indicador de ese shell interactivo.Eso supone, sin embargo, que no establece el
$PROMPT_COMMAND
en su~/.bashrc
. También tenga en cuenta que el estado de salida del comando no estará disponible en$?
.Para hacerlo aún más parecido al comando ingresado en el indicador de comandos de la shell, incluso puede agregarlo a la lista del historial. Me gusta:
De esa manera, una vez que salga
vi
, puede presionar la Uptecla para recuperar el mismovi
comando.Una forma más fácil de escribirlo:
Los:
La solución como se da en otras respuestas funciona pero tiene algunos inconvenientes:
cmd
está ejecutando, eso mata el exteriorsh
ya que solo hay un grupo de proceso para ambossh
ycmd
.cmd
$PROMPT_COMMAND
enfoque, el estado de salida del comando no estará disponible en$?
.Puede trabajar alrededor de 1 arriba haciendo:
O:
Con este último, también podrá suspender el proceso Ctrl-Z, pero no podrá usarlo
fg/bg
. Podrás seguir en el fondo, aunque haciendo unakill -s CONT
en el pid delcmd
.fuente
bash
scripts, no hay historial en absoluto, ya que no hay edición de línea o interacción del usuario a menos que lo useread -e
en su script (y verá quehistory -s text
funciona allí para preparar el historial visto por esoread -e
). Aquí, no estamos ejecutandohistory -s
desde un script, sino desde el$PROMPT_COMMAND
gancho de un shell interactivo.xfce4-terminal
como mínimo, la versión 0.6.3 ahora quiere un parámetro adicional--disable-server
- para pasar por el entorno. Ref: lists.debian.org/debian-user/2017/10/msg00045.html .Hasta donde he entendido su pregunta, desea ejecutar algunos procesos en un terminal, pudiendo hacer Ctrl+ Cellos y, después de eso, mantener la ventana abierta, con el shell.
Si tengo razón, esto podría lograrse con un comando como este:
fuente
múltiples aplicaciones en
xfce4-terminal
pestañasAgregar un shell interactivo a cada pestaña xfce
Puedes usar este truco para agregar un shell si / cuando tienes Ctrl+Cuna pestaña:
Esto te dará lo siguiente:
fuente
Al salir del shell sin
-H
el terminal también se cerrará. Con este indicador, el terminal seguirá ejecutándose, pero el proceso de shell se cierra y no se puede revivir.¿Creo que está intentando archivar que acaba de iniciar su terminal y se inicia su entorno de desarrollo?
Puede crear un script de shell y poner todos sus comandos dentro de él. Al final del script, solo comienza su shell:
Entonces llame a este script vía
xfce4-terminal -e /the/script
. Cuando finalice$SHELL
el proceso principal (su secuencia de comandos) finalice y las tareas en segundo plano recibirán la señal de salida y también se cerrarán.Si desea mantenerlos vivos, use, por ejemplo,
nohup jboss &
en su secuencia de comandosfuente