HP-UXコマンド「less」がプロンプトをめちゃくちゃにしないようにするにはどうすればよいですか?


8

moreHP-UXの出力が気に入らないので、less代わりにポケットベルとして使用します。

PAGER=less

その出力はすばらしいですが、Linuxでは、使用manして終了するとシェルに戻り、ディスプレイは以前の状態に戻りますが、HP-UXではシェルに戻ると次のコマンドが生成するように、プロンプトの前に残っている部分的な行です。

echo -e "text \c"

これを見てください:

  • HP-UXの場合:

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

(イタリア語のメッセージは「再フォーマット中です。お待​​ちください」)

  • Linuxの場合:

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

この問題を解決するには?


を与えるqか使用することで終了しますかCTRL+C。私は、HP-UXマシンを持っており、私が与えた場合(Linuxのと同様に)新しいラインに戻るように思われますqCTRL+C。私はEDITOR=vi自分の環境変数を持っています。
rahul

もちろん、q、iにはEDITOR = vimがありますが、EDITOR = viも試しますが、何も変更されません
elbarna

回答:


1

画面の入れ替えは、端末制御コードで行われます。このようなコードはに記載されていterminfo(5)ます。画面の保存/復元に関連する2つは通常smcup、およびrmcupです。1つ目は端末の特別なカーソルアドレス指定モードをオンにし(sm = "set mode")、2つ目はそれをオフにします。通常、これら2つは画面を保存して復元します。

画面の復元が機能しない場合は、それらのエントリがお使いの端末タイプに対して正しくない可能性があります。infocmpコマンドを使用して、現在のterminfoエントリの内容を印刷できます。それらのエントリ(smcuprmcup)を見て、エスケープシーケンスをターミナルマニュアルと比較して、それらが何をするかを決定する必要があります。おそらく、端末がterminfoエントリで期待されるものとわずか異なるだけです。


おそらくhpux xtermにいくつかのバグがあり、dttermをターミナルの作業としても使用できます
elbarna

それは可能性です。端末エミュレーターは、「そのような互換性がある」と主張することがありますが、物事は省きます。その後、システムが端末タイプを「そのようなもの」として定義すると、表示がめちゃくちゃになります。また、HPのxtermにTERMに使用される特別な値があり、適切に設定されていない可能性もあります(たぶんそれを変更するプロファイル?)。
2015年

2

言及されている機能は、X.V10R4(1986年12月)で導入されたxtermの代替画面です。この機能はサポートされていましたが、X11R6(約10年)までターミナルの説明に追加されませんでした。

HPUXの端末の説明は、xtermたまたまX11R5の説明と同じですが、いくつか追加されています(主にファンクションキー1〜12)。繰り返しになりますが、この機能(ファンクションキー)は以前からプログラムでサポートされていましたが、端末の説明には追加されていませんでした。

ここで何がinfocmpHP-UXのレポート:

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

X11R6ファイルX11R3(X11R5まで変更なし)へのリンクを次に示します。X11R6端末記述の代替画面機能は、次の行で提供されます

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

ncurses(Linuxなど)を使用すると、適用可能なすべての機能を一覧表示するずっと後の端末の説明が表示されます。

HPUXの場合、ticを使用して、機能を追加した端末の説明をコンパイルすることで問題を修正できます。HPUXマシンでrootアクセス権がある場合、それは簡単です。

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

それ以外の場合は、TERMINFO environment variable to your own terminfo directory, and runningtic`を設定してそのディレクトリにコンパイルすることで回避できます。何かのようなもの

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

TERMINFOフォローアップセッションのためにシェルで設定する必要もあります)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.