¿Cómo evitar que el comando HP-UX "less" estropee mi mensaje?

8

No me gusta la salida de moreHP-UX, así que en su lesslugar lo uso como localizador:

PAGER=less

Su salida es buena, pero, en Linux, cuando uso many luego salgo, vuelvo al shell, y la pantalla se ve exactamente como la dejé, pero en HP-UX, cuando vuelvo al shell, hay es una línea parcial que queda antes de la solicitud, al igual que el siguiente comando produce:

echo -e "text \c"

Mira esto:

  • en HP-UX:

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

(el mensaje en italiano significa "Reformateo en progreso, por favor espere")

  • en Linux:

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

¿Cómo resolver este problema?

elbarna
fuente
Dejas de fumar dando qo usando CTRL+C. Tengo una máquina HPUX y parece volver a la nueva línea (similar a Linux) si doy qo CTRL+C. Tengo EDITOR=vien mi entorno variables.
rahul
Por supuesto q, tengo EDITOR = vim, intento también EDITOR = vi pero nada cambia
elbarna

Respuestas:

1

El intercambio de pantalla se realiza con un código de control de terminal. Dichos códigos están documentados en terminfo(5). Los dos involucrados en el guardado / restauración de pantalla son típicamente smcupy rmcup. El primero activa un modo especial de direccionamiento del cursor del terminal (sm = "modo de ajuste") y el segundo lo desactiva. Por lo general, estos dos guardarán la pantalla y la restaurarán.

Si la restauración de pantalla no funciona, es posible que esas entradas sean incorrectas para su tipo de terminal. Puede imprimir el contenido de la entrada terminfo actual con el infocmpcomando Tendrá que mirar esas entradas ( smcupy rmcup) y comparar las secuencias de escape con el manual de su terminal para determinar qué hacen. Lo más probable es que su terminal sea ligeramente diferente de la esperada por la entrada de terminfo.

Azhrei
fuente
Probablemente hay algún error con hpux xterm, usar dtterm como terminal funciona bien también para el hombre
elbarna
Esa es una posibilidad. A veces, un emulador de terminal afirmará ser "tal y tal compatibilidad" pero dejará las cosas fuera. Cuando el sistema define el tipo de terminal como "tal y tal", la pantalla se desordena. También podría ser que el xterm de HP tiene un valor especial para usarse para TERM y no se está configurando correctamente (¿tal vez un perfil lo está cambiando?).
Azhrei
2

La característica mencionada es la pantalla alternativa de xterm que se introdujo en X.V10R4 (diciembre de 1986). Aunque la función era compatible, no se agregó a la descripción del terminal hasta X11R6 (aproximadamente diez años).

La descripción del terminal de HPUX es xtermla misma que la descripción del X11R5, con algunas adiciones (principalmente las teclas de función 1-12). Una vez más, la función (teclas de función) había sido compatible con el programa durante algún tiempo, pero no se agregó a la descripción del terminal.

infocmpEsto es lo que informa para 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,

Aquí hay enlaces al archivo X11R6 y al X11R3 (sin cambios a través de X11R5). Esta línea proporciona la función de pantalla alternativa en la descripción del terminal X11R6 :

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

Con ncurses (Linux, etc.), tiene una descripción de terminal mucho más tardía que enumera todas las características aplicables.

Para HPUX, puede solucionar el problema utilizando tic para compilar una descripción de terminal con la función agregada. Si tiene acceso de root en la máquina HPUX, eso es simple:

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

De lo contrario, puede solucionarlo configurando el tic environment variable to your own terminfo directory, and runningTERMINFO para compilar en ese directorio. Algo como

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

(también necesitaría TERMINFOestablecer en su shell para las sesiones de seguimiento).

Thomas Dickey
fuente