Come impedire al comando HP-UX "meno" di incasinare la mia richiesta?


8

Non mi piace l'output di moresu HP-UX, quindi uso lessinvece come cercapersone:

PAGER=less

Il suo output è buono, ma, su Linux, quando uso mane poi esco, torno alla shell e il display sembra proprio come l'ho lasciato, ma su HP-UX, quando torno alla shell, lì è una riga parziale rimasta prima del prompt, proprio come produce il seguente comando:

echo -e "text \c"

Guarda questo:

  • su HP-UX:

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

(il messaggio in italiano significa "Riformattazione in corso, attendere")

  • su Linux:

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

Come risolvere questo problema?


Smetti dando qo usando CTRL+C. Ho una macchina HPUX e sembra tornare alla nuova linea (simile a Linux) se do qo CTRL+C. Ho EDITOR=vinel mio ambiente variabili.
rahul,

Ovviamente q, ho EDITOR = vim, provo anche EDITOR = vi ma non cambia nulla
elbarna

Risposte:


1

Lo scambio di schermate viene effettuato con un codice di controllo del terminale. Tali codici sono documentati sotto terminfo(5). I due coinvolti nel salvataggio / ripristino dello schermo sono in genere smcupe rmcup. Il primo attiva uno speciale modo di indirizzamento del cursore del terminale (sm = "set mode") e il secondo lo disattiva. In genere, questi due salveranno lo schermo e lo ripristineranno.

Se il ripristino dello schermo non funziona, è possibile che tali voci non siano corrette per il tipo di terminale. È possibile stampare il contenuto della voce terminfo corrente utilizzando il infocmpcomando Dovrai guardare quelle voci ( smcupe rmcup) e confrontare le sequenze di escape con il tuo manuale del terminale per determinare cosa fanno. Le probabilità sono che il tuo terminale sia leggermente diverso da quello previsto dalla voce terminfo.


Probabilmente c'è qualche bug con hpux xterm, usando dtterm come terminale funziona bene anche per l'uomo
elbarna,

Questa è una possibilità. A volte un emulatore di terminale afferma di essere "tale e tale compatibile" ma lascia fuori le cose. Quando il sistema definisce quindi il tipo di terminale come "tale-e-tale", il display viene incasinato. Potrebbe anche essere che xterm di HP abbia un valore speciale da utilizzare per TERM e non sia impostato correttamente (forse un profilo lo sta cambiando?).
Azhrei,

2

La funzionalità menzionata è lo schermo alternativo di xterm che è stato introdotto in X.V10R4 (dicembre 1986). Sebbene la funzionalità fosse supportata, non è stata aggiunta alla descrizione del terminale fino a X11R6 (circa dieci anni).

La descrizione del terminale HPUX per xtermsembra essere la stessa della descrizione X11R5, con alcune aggiunte (principalmente i tasti funzione 1-12). Ancora una volta, la funzione (tasti funzione) era supportata dal programma da qualche tempo, ma non è stata aggiunta alla descrizione del terminale.

Ecco cosa infocmpriporta 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,

Ecco i collegamenti al file X11R6 e X11R3 (invariato tramite X11R5). La funzione di schermata alternativa nella descrizione del terminale X11R6 è fornita da questa linea :

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

Con ncurses (Linux, ecc.), Hai una descrizione del terminale molto successiva che elenca tutte le funzionalità applicabili.

Per HPUX, è possibile risolvere il problema utilizzando tic per compilare una descrizione del terminale con la funzione aggiunta. Se si dispone dell'accesso root sul computer HPUX, è semplice:

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

Altrimenti, puoi aggirare il problema impostando TERMINFO environment variable to your own terminfo directory, and runningtic` per compilare in quella directory. Qualcosa di simile a

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

(dovresti anche TERMINFOimpostarlo nella shell per le sessioni di follow-up).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.