Tela GNU: Não é possível colocar comandos a menos que a tela esteja conectada?

9

Eu tenho o seguinte script

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

a menos que eu anexe a tela primeiro parece que os efeitos das coisas não vão fazer nada? Por que isso e como posso modificar esse script para não precisar anexar a tela?

    
por dukevin 02.06.2011 / 10:39

2 respostas

14

Quando você inicia uma sessão de Tela no modo desanexado ( screen -d -m ), nenhuma janela é selecionada, portanto, a entrada enviada posteriormente com screen -X stuff é perdida. Você precisa especificar explicitamente que deseja enviar as combinações de teclas para a janela 0 ( -p 0 ). Esta é uma boa idéia, de qualquer forma, caso você crie outras janelas nessa sessão de tela por qualquer motivo.

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

( printf \r para emular rigorosamente a tecla Return ; muitos, mas nem todos os programas aceitam uma nova linha ( \n ).)

    
por 02.06.2011 / 10:47
2

Isso surgiu recentemente ao tentar responder a uma pergunta em unix.stackexchange.com .

O resumo é que a tela não tem uma janela padrão selecionada, a menos que você ateste, mas Gilles nos mostrou como você pode forçar um a ser selecionado adicionando o argumento -p 0 ao seu comando de tela.

Pessoalmente recomendo mudar para %código%. Aqui está como você portaria seus comandos de tela para trabalhar no tmux:

tmux new-session -d -n $1
tmux send-keys -t $1 "$beast\n"
    
por 02.06.2011 / 10:47