追加読書

追加読書

通常、bashコマンドラインはラップされます。私は慣れていて、うまくいきます。

[cnd@MacBook-Pro ~]$ echo abcdefgABCDEFGhijklmnopHIJKLMNOPq
rsQRStuvTuvWXYZ

(デモンストレーションのためにウィンドウサイズを縮小しました)

ただし、既定の CentOS8 シェルではこれは行われません。代わりに、入力の先頭の大部分を切り捨てて(端末の幅の末尾から3文字以内に入ると)これを「">」に置き換えるので、入力した内容を見ることはできません。

[cnd@hpz ~]$ 
<EFGhijklmnopHIJKLMNOPqrsQRStuvTuvWXYZ

(実際のシェルウィンドウからコピー/貼り付け)

この迷惑な行動を止める正しい方法は何ですか?完全なコマンドを確認する必要があります。 (私は長いPerlステートメントをたくさん入力します。実行する前に確認することが重要です!)

vt100またはxtermを端末として使用し、いくつかの「set」コマンドや他のエクスポートを使用するなど、さまざまな操作を試しましたが、これまでは推測できませんでした。そうです。改行、不要なスクロール、ansiエスケーププロンプトエスケープなど)

ベストアンサー1

これはGNU Readlineライン入力編集ライブラリの動作であり、Bourne Againシェルだけでなく、Readlineを使用するすべてのプログラムで表示されます。

termcap / terminfoデータベースのターミナルレコード(TERM環境変数として表示)がカーソルを上に移動するターミナル機能を提供していない場合、Readlineは複数行モードで水平にスクロールする1行モードに置き換えられます(Kornシェル方式では独自の行編集ライブラリを使用します)。

実際、唯一のドキュメントは、ライブラリのソースコードに隠されたコメントです。

horizontal-scroll-mode変数を on に設定して、Readline を強制的に 1 行モードに戻すこともできます。ただし、複数行モードを使用することを強制することはできません。とは別にフル機能の termcap/terminfo ロギングを提供します。

皮肉なことに、この代替措置は35年前にまれなターミナルとターミナルエミュレータにとって非常に重要でした。ラインプリンタとdumbターミナルは、そもそもこのタイプのライン入力編集には適していません。そしてほとんどすべて最新のビデオ端末には、カーソルを上に移動させる制御シーケンスがあります。

21世紀のより合理的なアプローチは、ECMA-48規格に基づくものです。 ECMA-48規格は1976年以来、1980年代半ばから広くサポートおよび開発されていますdumb(実際には1968年TTY-37、glassttyおよび参照)。デフォルトの。これは今日の入力ライン編集を行うことができますが、カーソルの上に移動制御シーケンスを持たない端末は言うまでもなく、真のTTY-37でさえほとんど会わないことを認識します。vanillatty37

GNU Readlineはまだこれを行いません。

追加読書

おすすめ記事