GNU/Linux >> Linux の 問題 >  >> Linux

BashClearコマンドの奇妙な動作によりスクロールバックバッファが削除されます。

ターミナルでclearを実行すると、画面の上部から現在の行へのスクロールバックバッファが削除されます。 xterm、st、およびurxvtで試しましたが、問題は解決していません。スクロールバックバッファに触れないようにクリアの動作を変更する方法はありますか?

承認された回答:

「画面上部から現在の行まで」というコメントはあいまいです。 目に見える部分の上から意味する場合 画面のスクロールバックではありません 。ターミナルのスクロールバックは、スクロールバー(またはシフトページアップなどの適切なキー)を使用した場合にのみ表示される部分です。

XTerm制御シーケンスは、関連するエスケープシーケンスを文書化します:

CSI Ps J  Erase in Display (ED).
            Ps = 0  -> Erase Below (default).
            Ps = 1  -> Erase Above.
            Ps = 2  -> Erase All.
            Ps = 3  -> Erase Saved Lines (xterm).

端末記述機能clear 最後から2番目のものを使用します(例:

clear=E[HE[2J

カーソルを左上に置き、画面全体(表示)をクリアします。あなたはできた 以下の消去を使用します 、ただし、端末の説明では使用されていません。

スクロールバックをクリアすることを指します :これは端末固有の機能であり、元々はxtermのエスケープシーケンス(1999、ctlseqs.msに記載されていますが、変更には記載されていません)であり、後で(2011)Linuxコンソールおよび対応する端末の説明の拡張機能として実装されました。ターミナルデータベースには、それが「その他の拡張機能」としてリストされています。

現在、これらの端末の説明には次の機能があります:

  • linux3.0(「linux」の現在のデフォルト)
  • パテ
  • xterm + basic(ほとんどの「xterm」バリアントで使用されるビルディングブロック)

VTEなどのxtermの類似物でサポートされているかどうかは、テストによって回答する必要があります(VTEまたはKonsoleに関する有用なドキュメントはありません)。

拡張機能を使用したくない場合は、 E3を削除できます。 使用する端末の説明からの機能(例:

infocmp -1x >foo
edit foo, removing the line with "E3="
tic -x foo

オプション-1を使用することを提案しました および-x フォーマットを簡素化し、変更する機能を表示します。 https://ghostbin.com/paste/kfsbjに示されている例は、そのアドバイスと一致しています。

  • パス名/home/flowerpick/.terminfo/x/xterm ncursesによって使用されます
  • 機能AX およびXT 拡張機能です(E3など) )、-xで表示 オプション。

複数の端末タイプを使用している場合は、($TERMの値)ごとにこれを行う必要があります。 )、変更はclearを実行するマシンにのみ適用されます 。 infocmpの最初の数行 出力には、作業中のものが表示されます:

#   Reconstructed via infocmp from file: /home/flowerpick/.terminfo/x/xterm
xterm|xterm terminal emulator (X Window System),

たとえば、uxrvt $TERMを設定します rxvt-unicodeのようなものに 、infocmpでこのような行を生成します :

#       Reconstructed via infocmp from file: /lib/terminfo/r/rxvt-unicode       
rxvt-unicode|rxvt-unicode terminal (X Window System),

st プログラムはxtermを使用します (またはおそらくxterm-256color )、そののコピーを見てからしばらく経ちましたが コメントするのに十分うまくいきました。

関連:画面を強制的に空白にして入力を無視しますか?

ちなみに、あなたはできた clearのエイリアスがあります これは(端末の説明を無視して)指定されたエスケープシーケンスを送信していますが、これが誰からも報告されているのを見たことがありません。

「上をクリア」したい場合は、「クリア」と入力するほど簡単ではありません。エスケープ

Linux
  1. |ターミナルコマンドで?

  2. Ubuntu でターミナルをクリアする方法

  3. screen コマンドでスクロールバックをクリアするには?

  1. LinuxでBASHコマンドライン履歴をクリアする方法

  2. Linuxターミナルでのmvコマンドの5つの使用

  3. Linux 端末のスクロールバック バッファ サイズを増やす

  1. bash エクスポート コマンド

  2. jenkins パイプラインで bash コマンドを実行する

  3. Mac OS X ターミナルの ip コマンド