Como o “homem” restaura a tela quando eu saio do programa?

17

Se eu abrir uma página man de um programa como cat ou ls , ele imprime (pode não ser a palavra apropriada) o conteúdo da página man e quando eu pressiono q , ele mostra a tela apenas como antes de chamar o comando man . Como a restauração acontece? O que apaga tudo e depois imprime o conteúdo anterior do shell?

Exemplo:

[VAR121@Tesla Testing]$  man ls

Saída:

LS(1)                                                        User Commands                                                        LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

 ............

Quando eu pressiono q , a tela volta para a aparência padrão dos shells, como o prompt mostrado abaixo.

[VAR121@Tesla Testing]$  man ls
[VAR121@Tesla Testing]$

Como a tela é restaurada?

    
por VAR121 07.01.2013 / 15:11

1 resposta

18

"Limpar" e "restaurar" a tela é, na verdade, uma função do emulador de terminal que você está usando ( xterm , gnome-terminal , konsole , screen ).

Por padrão, o pager que man usa é less .

De man 1 man

   -P  pager
          Specify  which pager to use.  This option overrides the 
          MANPAGER environment variable, which in turn overrides 
          the PAGER variable.  By default, man  uses /usr/bin/less -is.

Quando less é invocado, um altscreen é iniciado pelo emulador de terminal para exibir o conteúdo da página man. Quando less sai, o altscreen é destruído e o terminal exibe o que foi salvo no buffer.

Existe uma resposta aqui que discute isso mais adiante e como manter programas como less de ativar um altscreen e, assim, limpar a tela quando ela sai. Em suma, você poderia definir uma variável de ambiente para que less não inicie uma altscreen na invocação. Se você estiver usando bash, coloque isso em ~ / .bashrc:

export MANPAGER="/usr/bin/less -r -X -is"

    
por 07.01.2013 / 16:20