2009-05-22 7 views

Respuesta

7

Creo que esto funciona:

if [-n "$STY"]; then 
    screen -X title "foo" 
    screen -X monitor on 
fi 
+0

¡Perfecto! ¡Gracias! – Dan

+2

No creo que se requiera el comando "if [-n ..." - el comando de pantalla -X ... silenciosamente errores si no se puede ejecutar – dbr

+0

Con esta técnica creo que me olvidaré del monitoreo, lo haré simplemente cambie el título a foo (hecho) cuando el programa termine. Todavía tengo que descubrir cuándo es un buen momento para que vuelva a cambiar a "bash", ya que nunca he usado títulos y realmente no tengo ganas de cambiarlos manualmente. – Dan

0

La pantalla se ejecuta de forma transparente, por lo que la detección de la sesión de la pantalla es difícil. Si intentas enviar pulsaciones de teclas, funcionaría y llenaría tu terminal con un poco de basura si no estás en una sesión.

+0

Bueno, si lo necesito puedo poner algo en mi archivo screenrc como una declaración de variable para que sea obvio para mi script bash (este script es solo para mí). Todavía estoy colgado por la otra parte. Tengo estos programas que tardan varias horas en ejecutarse, y sería genial si tan pronto como se inicie el programa, el título se renombra al proceso en ejecución (mi script se ejecuta con un solo argumento) y se activará la supervisión, entonces podría esperar otra pestaña y recibir una notificación cuando mi programa termine. – Dan

1

¿Está buscando mostrar información o interactuar con la sesión de pantalla? Puede enviar mensajes de vuelta con esto: (http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html#lbAI)

el mensaje LÍNEA pantalla muestra mensajes informativos y otros diagnóstico en una línea de mensaje. Mientras que esta línea se distribuye para que aparezca en en la parte inferior de la pantalla, puede ser definida para aparecer en la parte superior de la pantalla durante la compilación. Si el terminal tiene una línea de estado se define en su termcap, la pantalla va a utilizar esto para mostrando sus mensajes, de lo contrario una línea de la pantalla actual será temporalmente sobrescribe y salida se interrumpirá momentáneamente. La línea de mensaje se elimina automáticamente después de unos segundos de retraso, pero también puede eliminarse antes (en las terminales sin una línea de estado) comenzando con el tipo .

La instalación línea de mensaje se puede utilizar por una aplicación que se ejecuta en la ventana actual por medio de la secuencia de Privacidad mensaje de control ANSI . Para ejemplo, desde el interior de la cáscara, intente algo como:

echo '<esc>^Hello world from window '$WINDOW'<esc>\\' 

donde '' es un escape, '^' es un literal de flecha hacia arriba , y '\' se convierte en una sola barra invertida.

2

Pantalla declara $STY variable de entorno, puede intentar usarlo.

9

Desde la página de manual de la pantalla:

-X Send the specified command to a running screen session. You can 
     use the -d or -r option to tell screen to look only for attached 
     or detached screen sessions. Note that this command doesn't work 
     if the session is password protected. 

Básicamente, ejecute

screen -X title mynewtitle 
screen -X monitor on 

Si el terminal no se está ejecutando dentro de la pantalla , silenciosamente errores:

notinscreen:~$ screen -X title mynewtitle 
notinscreen:~$ 

También puede enviar el comando a una sesión específica, incluso mientras está desconectado.Dada una sesión de pantalla llamado "principal":

$ screen -S main 
[detach from screen session] 
$ screen -ls 
There is a screen on: 
     2073.main  (Detached) 
1 Socket in /tmp/uscreens/S-dbr. 

.you puede enviado el título de la última ventana activa a blah:

$ screen -x main -X title blah 

..o una ventana específica (denominada en este oldwindow ejemplo):

$ screen -x main -p oldwindow -X title blah 

en lugar de utilizar -x main puede utilizar el ID de proceso (de screen -ls), también en lugar de utilizar una ventana Nombre (-p oldwindow) se puede utilizar un número de la ventana:

$ screen -x 2073 -p 0 -X title h 

Si sólo hay una sesión, no tiene que especificar el PID sesión o nombre.

Cuestiones relacionadas