Pantalla GNU: ¿No puede rellenar comandos a menos que la pantalla esté conectada?

10

Tengo el siguiente script

screen -d -m -S $1                #start screen minimized
screen -S $1 -X stuff "$beast     
"                                 #stuff commands

a menos que adjunte la pantalla primero, ¿parece que los efectos de las cosas no harán nada? ¿Por qué es esto y cómo puedo modificar este script para que no necesite adjuntar la pantalla?

dukevin
fuente

Respuestas:

14

Cuando inicia una sesión de pantalla en modo separado ( screen -d -m), no se selecciona ninguna ventana, por lo que la entrada enviada más tarde screen -X stuffsimplemente se pierde. Debe especificar explícitamente que desea enviar las pulsaciones de teclas a la ventana 0 ( -p 0). De todos modos, esta es una buena idea, en caso de que cree otras ventanas en esa sesión de Pantalla por cualquier motivo.

screen -S "$1" -p 0 -X stuff "$beast$(printf \\r)"

( printf \\rpara emular estrictamente la Returnclave; muchos pero no todos los programas aceptan una nueva línea ( \n).)

Gilles 'SO- deja de ser malvado'
fuente
¡Gracias! Funciona perfecto. Todo el mundo lo siento por ser fuera de tema
dukevin
no funciona para mi
Tanner Strunk
2

Esto surgió recientemente al intentar responder una pregunta en unix.stackexchange.com .

El resumen es que la pantalla no tiene una ventana seleccionada por defecto a menos que la adjunte, pero Gilles nos mostró cómo puede forzar que se seleccione una agregando el argumento -p 0a su comando de pantalla.

Personalmente recomiendo cambiar a tmux. Aquí es cómo portaría los comandos de su pantalla para que funcionen en tmux:

tmux new-session -d -n $1
tmux send-keys -t $1 "$beast\n"
Caleb
fuente