私がこれを尋ねるのはなぜですか?
推測できるように、これは主に好奇心から来ています。しかし、なぜ私の心の中に好奇心がありましたか?
さて、しばらく私はclear
端末画面を消去するために走った後、画面の下部から目を離さなければならず、一連のコマンドとそのコマンドの後にプロンプトが終わったという事実に不満を感じました。画面上部に出力します。
それが私が私の中に挿入したものです~/.bashrc
:
__prompt_to_bottom_line() {
tput cup $LINES
}
alias clear='clear && __prompt_to_bottom_line'
私に実行した後、下部のプロンプトclear
はプロンプトですいつも一番下ではなく一番上ではありません。他のすべては正常と同じです。
残りはどうですか?
この必要性を感じる人は私だけではないようです。この問題たとえば、ユーザーはプロンプトが常に一番上にあり、出力がその下にあることを望みます。しかし逆に(ただし、複数行でもコマンドの出力は明らかに反転しません。)
考えてみると、ユーザーが画面上でビューを期待するのがまさにtac
私が期待しているのと同じです(複数行の出力が反転しないことを除いて)。
だから私の質問は
ターミナル設計には一貫性のない動作が表示されるのはなぜですか?均一ではないということは、開始された状況が1clear
秒を除いて絶対に繰り返されないことです。これにより、コマンドは引き続き変更され、プロンプトが画面の下に移動し、最終的にプロンプトが「安定した」位置に終わります。誰かがそこにいない場合、画面は再び動きませんclear
。
ラインが常に上/下にあり、出力が下/上に押されているので、もう少し目にやさしいデザインではありませんか?
答え1
私はターミナルエミュレータと仮想コンソールについて話しています。どちらも使用します
bash
が、他のシェルを使用できるのでそうだと思います。シェルの動作について尋ねています。
端末エミュレータの動作履歴は、次の場所に含める必要があります。端末エミュレータで入力カーソルが常に上から下に移動するのはなぜですか?私の答えを含む答えは、Lear Siegler ADM端末の歴史の概要を欠いています。これは、ほとんどの動作が端末の進化に関連しているためです。初期端末は「アンダースコア入力」のみサポートしていました。現在、おなじみの「下線のスクロール」動作はADM-3Aに導入されたオプションでした。
シェルの動作のこれらの側面の記録は、実際には存在しないということです。sh
-style シェルは端末やその機能について何も知りません。本質的に、シェルは、入力が端末から来るのか、出力が端末であるかのように偽装されたデバイスに送信されるのかどうかだけに興味があります(次によって決定されます)。isatty
機能);テレプリンタ、ガラスターミナル、ターミナルエミュレータ、または他のターミナル互換デバイス(仮想または他のもの)であるかどうかは不明です。
sh
¹現在のスタイルのシェルの一部の機能により、「デフォルト」例えば select
Bashでは、端末は与えられた数の列と行を持つことが知られています。