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

10

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 prenda a tela primeiro, parece que os efeitos das coisas não farão nada? Por que isso e como posso modificar esse script para não precisar anexar a tela?

Dukevin
fonte

Respostas:

14

Quando você inicia uma sessão de tela no modo desanexado ( screen -d -m), nenhuma janela é selecionada; portanto, as entradas enviadas posteriormente screen -X stuffsão perdidas. Você precisa especificar explicitamente que deseja enviar as teclas pressionadas para a janela 0 ( -p 0). De qualquer forma, é uma boa ideia, caso você crie outras janelas nessa sessão da Tela por qualquer motivo.

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

( printf \\rpara emular estritamente a Returnchave; muitos, mas nem todos os programas aceitam uma nova linha ( \n).)

Gilles 'SO- parar de ser mau'
fonte
Obrigado! funciona perfeito. Desculpe a todos por estarem fora de tópico
dukevin 2/11
Nao funciona para mim.
precisa
2

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

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

Pessoalmente , recomendo mudar para tmux. 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"
Caleb
fonte