2012-05-15 13 views
6

Tengo una sesión de pantalla ejecutándose con varias ventanas. Quiero adjuntarme a ella, crear una nueva ventana de pantalla dentro de ella y comenzar un shell en esa nueva ventana.Adjuntar a la 'pantalla' sesión con la creación de una nueva ventana de pantalla

Pregunta: ¿Cómo puedo hacer esto desde la línea de comando fuera de la sesión de la pantalla?

Ya he intentado mucho, e. gramo. screen -x (pero se conecta a una de las ventanas de pantalla existentes, no crea una nueva ni inicia un nuevo shell). Cualquier sugerencia es bienvenida.

El entorno es Linux (Ubuntu 12.04).

+0

parece que no hay una forma estándar de hacerlo. Puede buscar en la [lista de correo] (http://lists.gnu.org/archive/html/screen-users/) – tuxuday

+0

Lo habría aceptado como una respuesta porque encontré algo allí, ¡gracias! :) – Alfe

+0

@Alfe si encontraste una respuesta adecuada, publícala tú mismo. Puedes aceptar tu propia respuesta después de un tiempo si es una respuesta adecuada. Además, tengo curiosidad: P – KurzedMetal

Respuesta

6

he encontrado algo en la lista de correo, GRACIAS :) tuxuday

lo estoy haciendo ahora de esta manera:

#!/bin/bash 
screen -X screen -t NEWWINDOW # create new window (switches existing attached terminal) 
sleep 0.1 
screen -X other # switch existing attached terminal back to its old window 
sleep 0.1 
gnome-terminal -e 'screen -x -p NEWWINDOW' # connect to new window 

No estoy seguro acerca de esos Camas, tal vez ellos aren' Es necesario en todos los entornos, pero puedo esperar esos 0.2 segundos fácilmente.

Mi .bash_aliases está cambiando el título de la ventana de la pantalla con un retraso, por lo que el incómodo NEWWINDOW no se mantendrá por mucho tiempo (y por lo tanto no obstaculizará más llamadas a este script).

+2

El truco que obtuve de la lista de correo fue la 'pantalla -X otra'. – Alfe

+1

eche un vistazo a esta [entrada de blog] (https://rohieb.wordpress.com/2010/07/30/gnu-screen-start-with-multiple-windows-and-commands/). Se recomienda utilizar un archivo de comando de sesión (solo un archivo con todos los comandos como 'pantalla',' seleccionar' y 'otro') y ejecutar' pantalla -X archivo de sesión fuente' en lugar de llamar 'pantalla -X' varias veces.Buen enfoque – KurzedMetal

+0

Llamo a 'screen -X' solo dos veces ... pero si ese script crece, el enfoque del archivo de comando de sesión vale la pena echarle un vistazo seguro :) – Alfe

3

Añadir nueva ventana independiente en sesion_name y ejecutar command

screen -S sesion_name -x -X screen bash -c 'command; exec bash' 
2

Para elegir una ventana para unirse, utilice la opción -p. Dando + creará uno nuevo, por lo que su orden es simplemente:

screen -x session_name -p + 

Esto está documentado en la página del manual:

-pn ̲ ̲ u m b ̲ ̲ ̲ e r ̲ ̲ _o r ̲ _n ̲ a ̲ m ̲ e ̲ | ̲ - ̲ | ̲ = ̲ | ̲ + ̲

Preselect a window. This is useful when you want to reattach to a 
specific windor or you want to send a command via the "-X" option 
to a specific window. As with screen's select commant, "-" selects 
the blank window. As a special case for reattach, "=" brings up the 
windowlist on the blank window. 
+0

Miré mi página de manual otra vez (versión 4.00.03jw4) y encontré solo el '-p número_o_nombre' (no el' | - | = | + '). Luego miré una versión un poco más nueva (4.01.00devel) y encontré tu línea de sinopsis. Es confuso que el texto que pegó proviene de la página del hombre más viejo (que no describe nada sobre el '+') mientras que la página de manual más nueva en mis pruebas tenía este texto adicional que describe el '+': '... mientras que un" + "creará un nuevo ventana. El comando no se ejecutará si no se pudo encontrar la ventana especificada. ¡Así que esta es una nueva opción! Gracias por señalar esto, creo que resuelve mi problema. – Alfe

Cuestiones relacionadas