Como impedir que o comando HP-UX "less" atrapalhe meu prompt?

8

Não gosto da saída do moreHP-UX, então uso lesscomo pager:

PAGER=less

Sua saída é boa, mas, no Linux, quando uso mane saio, volto para o shell, e a tela fica do jeito que deixei, mas no HP-UX, quando volto para o shell, é uma linha parcial deixada antes do prompt, semelhante ao seguinte comando:

echo -e "text \c"

Veja isso:

  • no HP-UX:

    user@hpux2:~$ man ls
    Riformattazione in corso. Attendere...user@hpux2:~$
    

(a mensagem em italiano significa "Reformatação em andamento, aguarde")

  • no Linux:

    user@linux:~$ man ls
    user@linux:~$
    

Como resolver este problema?

elbarna
fonte
Você sai dando qou usando CTRL+C. Eu tenho uma máquina HPUX e parece retornar à nova linha (semelhante ao linux) se eu der qou CTRL+C. Eu tenho EDITOR=vino meu ambiente variáveis.
Rahul 15/05
Claro q, eu tenho EDITOR = vim, eu tento também EDITOR = vi, mas nada muda
elbarna

Respostas:

1

A troca de tela é feita com um código de controle do terminal. Esses códigos estão documentados em terminfo(5). Os dois envolvidos na economia / restauração da tela são tipicamente smcupe rmcup. O primeiro liga um modo de endereçamento do cursor especial do terminal (sm = "modo de ajuste") e o segundo o desliga. Normalmente, esses dois salvam a tela e a restauram.

Se a restauração da tela não estiver funcionando, é possível que essas entradas estejam incorretas para o seu tipo de terminal. Você pode imprimir o conteúdo da entrada atual terminfo usando o infocmpcomando Você precisará examinar essas entradas ( smcupe rmcup) e comparar as seqüências de escape com o manual do terminal para determinar o que elas fazem. As probabilidades são de que o seu terminal seja um pouco diferente do esperado pela entrada terminfo.

Azhrei
fonte
Provavelmente há algum erro com xterm hpux, usando dtterm tão bom trabalho terminal também para o homem
elbarna
Essa é uma possibilidade. Às vezes, um emulador de terminal afirma ser "compatível com isso", mas deixa as coisas de fora. Quando o sistema define o tipo de terminal como "tal e tal", o visor fica confuso. Também pode ser que o xterm da HP tenha um valor especial para ser usado no TERM e não esteja sendo definido corretamente (talvez um perfil o altere?).
Azhrei 19/05
2

O recurso mencionado é a tela alternativa do xterm, que foi introduzida no X.V10R4 (dezembro de 1986). Embora o recurso tenha sido suportado, ele não foi adicionado à descrição do terminal até o X11R6 (cerca de dez anos).

A descrição do terminal do HPUX é xterma mesma que a descrição do X11R5, com algumas adições (principalmente as teclas de função 1 a 12). Novamente, o recurso (teclas de função) foi suportado pelo programa por algum tempo, mas não foi adicionado à descrição do terminal.

Aqui estão os infocmprelatórios do HPUX:

#       Reconstructed via infocmp from file: /usr/share/lib/terminfo/x/xterm
xterm|vs100|xterm terminal emulator,
        am, km, xenl,
        cols#80, lines#65,
        bel=^G, blink=@, bold=\E[1m, civis=\E[?25I,
        clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\b,
        cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
        cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
        dl1=\E[M, ed=\E[J, el=\E[K, home=\E[1;1H, ht=\t,
        hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
        il1=\E[L, ind=\n, kbs=\177, kcub1=\EOD, kcud1=\EOB,
        kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR,
        kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
        kf8=\E[19~, kf9=\E[20~, knp=\E[6~, kpp=\E[5~, rc=\E8,
        rev=\E[7m, ri=\EM, rmkx=\E[?1l, rmso=\E[m,
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=@,
        sc=\E7,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
        sgr0=\E[m, smkx=\E[?1h, smso=\E[7m, tbc=\E[3g,

Aqui estão os links para o arquivo X11R6 e o X11R3 (inalterado no X11R5). O recurso de tela alternativa na descrição do terminal X11R6 é fornecido por esta linha :

smcup=\E7\E[?47h, rmcup=\E[2J\E[?47l\E8,

Com ncurses (Linux, etc), você tem uma descrição do terminal muito mais tarde, que lista todos os recursos aplicáveis.

Para o HPUX, você pode corrigir o problema usando o tic para compilar uma descrição do terminal com o recurso adicionado. Se você tem acesso root na máquina HPUX, é simples:

infocmp >foo
vi foo (adding the `smcup` and `rmcup` line)
sudo tic foo

Caso contrário, você pode contorná-lo definindo o TERMINFO environment variable to your own terminfo directory, and runningtic` para compilar nesse diretório. Algo como

TERMINFO=$HOME/myterm; export TERMINFO
mkdir -p $TERMINFO/x
tic foo

(você também precisará TERMINFOdefinir no seu shell para sessões de acompanhamento).

Thomas Dickey
fonte