Como evitar que a tela do GNU limpe a tela ao terminar?

1

Quando eu corro

$ screen id

tudo que vejo é a mensagem [screen is terminating] na parte superior da tela. O que eu quero ver é a saída do comando id e da mensagem [screen is terminating] . Eu posso pegar o dele com:

$ TERM=vt102 screen id

Nesse caso, a tela (1) não limpa a tela, mas emite muitas linhas vazias no final, para que eu possa rolar para cima e ver a saída de id .

No entanto, não quero usar TERM=vt102 , porque preciso de alguns recursos de terminal mais avançados.

Como posso evitar que a tela (1) apague a tela ao terminar?

    
por pts 19.08.2015 / 16:02

1 resposta

7

Observe que screen é um emulador de terminal. Então, sua pergunta é um pouco como perguntar como posso iniciar xterm de gnome-terminal e ter o que foi exibido pela última vez em xterm visible no meu gnome-terminal quando xterm sair.

Agora, a diferença entre xterm e screen é que, enquanto xterm usa o protocolo X para desenhar sua tela, screen usa um terminal de host.

Por padrão, screen limpará a tela de seu terminal host para exibir seu próprio terminal emulado e, quando disponível, usará a tela alternativa (antes de limpar) desse terminal host, terminação, ele pode restaurar o estado do terminal host como era antes de iniciar.

Então, o que você vê não é screen limpar a tela ao sair, mas restaurar a tela principal do terminal host. O conteúdo da janela screen que foi exibida pela última vez ainda está lá na tela alternativa. Com xterm , você pode dar uma olhada nele selecionando Mostrar tela alternativa no menu Ctrl + MiddleClick.

Se o terminal host não suporta uma tela alternativa (como a vt102), obviamente não pode fazer isso. Em vez disso, não faz nada, que é basicamente o que você quer.

Então, o que você pode fazer é informar screen que o terminal host não suporta uma tela alternativa. Para isso, você pode adicionar a ~/.screenrc :

 termcapinfo * ti=:te=

O que diz: para todos os possíveis terminais de host ( * , correspondidos com $TERM ), substitua o banco de dados termcap/terminfo para dizer que para esses terminais, as seqüências de escape para entrar ou sair da tela alternativa são a cadeia vazia .

ti e te não significam exatamente tela alternativa . Do link :

  • ti (smcup in terminfo)
    String of commands to put the terminal into whatever special modes are needed or appropriate for programs that move the cursor nonsequentially around the screen. Programs that use termcap to do full-screen display should output this string when they start up.

  • te (rmcup in terminfo)
    String of commands to undo what is done by the ti string. Programs that output the 'ti' string on entry should output this string when they exit.

Mas isso se traduz na tela alternativa para a maioria dos emuladores de terminal (especificamente, em xterm é tela alternativa e salvando / restaurando a posição do cursor)

    
por 20.08.2015 / 13:02

Tags