Wie kann verhindert werden, dass der HP-UX-Befehl "less" meine Eingabeaufforderung durcheinander bringt?

8

Die Ausgabe von moreHP-UX gefällt mir nicht , daher verwende ich sie lessstattdessen als Pager:

PAGER=less

Die Ausgabe ist gut, aber unter Linux mangehe ich , wenn ich sie benutze und dann beende, zurück zur Shell, und das Display sieht genauso aus, wie ich es verlassen habe, aber unter HP-UX, wenn ich zurück zur Shell gehe ist eine Teilzeile vor der Eingabeaufforderung, ähnlich wie der folgende Befehl:

echo -e "text \c"

Schau dir das an:

  • unter HP-UX:

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

(Die Meldung auf Italienisch bedeutet "Neuformatierung läuft, bitte warten")

  • unter Linux:

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

Wie kann man dieses Problem lösen?

Elbarna
quelle
Beenden Sie durch Geben qoder Verwenden CTRL+C. Ich habe eine HPUX-Maschine und sie scheint zur neuen Zeile zurückzukehren (ähnlich wie bei Linux), wenn ich qoder gebe CTRL+C. Ich habe EDITOR=viin meiner Umgebung Variablen.
Rahul
Natürlich q, ich habe EDITOR = vim, ich versuche auch EDITOR = vi, aber nichts ändert sich
elbarna

Antworten:

1

Der Bildschirmwechsel erfolgt mit einem Terminalsteuercode. Solche Codes sind unter dokumentiert terminfo(5). Die beiden am Speichern / Wiederherstellen des Bildschirms beteiligten sind typischerweise smcupund rmcup. Der erste schaltet einen speziellen Cursor-Adressierungsmodus des Terminals ein (sm = "set mode") und der zweite schaltet ihn aus. In der Regel speichern diese beiden den Bildschirm und stellen ihn wieder her.

Wenn die Bildschirmwiederherstellung nicht funktioniert, sind diese Einträge möglicherweise für Ihren Terminaltyp falsch. Mit dem infocmpBefehl können Sie den Inhalt des aktuellen terminfo-Eintrags drucken . Sie müssen sich diese Einträge ( smcupund rmcup) ansehen und die Escape-Sequenzen mit Ihrem Terminal-Handbuch vergleichen, um festzustellen, was sie tun. Wahrscheinlich unterscheidet sich Ihr Terminal nur geringfügig von dem, das vom terminfo-Eintrag erwartet wird.

Azhrei
quelle
Wahrscheinlich gibt es einen Fehler mit hpux xterm, dtterm als Terminal zu verwenden, funktioniert auch gut für man
elbarna
Das ist eine Möglichkeit. Manchmal behauptet ein Terminalemulator, "so und so kompatibel" zu sein, lässt aber Dinge aus. Wenn das System dann den Terminaltyp als "so und so" definiert, wird die Anzeige durcheinander gebracht. Es kann auch sein, dass HPs xterm einen speziellen Wert für TERM hat und nicht richtig eingestellt ist (möglicherweise ein Profil, das ihn ändert?).
Azhrei
2

Die erwähnte Funktion ist der alternative Bildschirm von xterm, der in X.V10R4 (Dezember 1986) eingeführt wurde. Obwohl die Funktion unterstützt wurde, wurde sie erst mit X11R6 (ca. zehn Jahre) zur Terminalbeschreibung hinzugefügt.

Die HPUX-Terminalbeschreibung für xtermstimmt mit der X11R5-Beschreibung überein, mit einigen Ergänzungen (hauptsächlich Funktionstasten 1-12). Auch hier wurde die Funktion (Funktionstasten) seit einiger Zeit vom Programm unterstützt, jedoch nicht zur Terminalbeschreibung hinzugefügt.

Hier ist , was infocmpfür HP - UX berichtet:

#       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,

Hier finden Sie Links zur X11R6-Datei und zum X11R3 (unverändert bis X11R5). Die alternative Bildschirmfunktion in der X11R6-Terminalbeschreibung wird durch diese Zeile bereitgestellt :

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

Mit ncurses (Linux usw.) haben Sie eine viel spätere Terminalbeschreibung, in der alle anwendbaren Funktionen aufgelistet sind.

Für HPUX können Sie das Problem beheben, indem Sie mit tic eine Terminalbeschreibung mit der hinzugefügten Funktion erstellen. Wenn Sie Root-Zugriff auf dem HPUX-Computer haben, ist das ganz einfach:

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

Andernfalls können Sie dies environment variable to your own terminfo directory, and runningumgehen, indem Sie den TERMINFO- Tic festlegen, der in dieses Verzeichnis kompiliert werden soll . Etwas wie

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

(Sie müssten auch TERMINFOin Ihrer Shell für Folgesitzungen festlegen).

Thomas Dickey
quelle