more
私はHP-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:~$
この問題を解決するには?
答え1
言及された機能はxtermのものです。代替画面X.V10R4(1986年12月)に紹介されました。この機能はサポートされていますが、X11R6(約10年前)までは端末記述に追加されませんでした。
xterm
HPUXの端末記述は、いくつかの追加事項(主にファンクションキー1-12)を除いて、X11R5と同じです。また、その機能(ファンクションキー)はプログラムでしばらくサポートされていましたが、端末の説明には追加されませんでした。
HPUXが報告する内容は次のとおりですinfocmp
。
# 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
environment variable to your own terminfo directory, and running
それ以外の場合は、コンパイルされたTERMINFO tic`を設定してこの問題を解決できます。それ目次。それはまるで
TERMINFO=$HOME/myterm; export TERMINFO
mkdir -p $TERMINFO/x
tic foo
TERMINFO
(また、後続のセッションのためにシェルでこれを設定する必要があります。)
答え2
画面交換は端末制御コードを介して行われます。これらのコードは以下に説明されていますterminfo(5)
。画面の保存/復元に関連する2つはsmcup
一般的にrmcup
。最初はターミナルの特殊カーソルアドレッシングモード(sm = "set mode")をオンにし、2番目はオフにします。通常、これら2つは画面を保存して復元します。
画面リカバリが機能しない場合、これらの項目が端末タイプに適していない可能性があります。このコマンドを使用して、現在のterminfoエントリの内容を印刷できますinfocmp
。これらの項目(smcup
および)を調べて、rmcup
エスケープシーケンスを端末のマニュアルと比較して、その項目が何をしているのかを確認する必要があります。あなたの端末はおそらく少しterminfoエントリで予想されるものとは異なります。