私は以下のように2行のプロンプトを表示しています。 clear
のようなコマンドで画面をクリアしますが、の両方とものプロンプト行が表示されるようにしますか?2行のプロンプトで端末の画面をクリアし、両方の行を表示し続ける
~/current/directory git-branch*
$ echo 'hello...
私は以下のように2行のプロンプトを表示しています。 clear
のようなコマンドで画面をクリアしますが、の両方とものプロンプト行が表示されるようにしますか?2行のプロンプトで端末の画面をクリアし、両方の行を表示し続ける
~/current/directory git-branch*
$ echo 'hello...
short:いいえ、そのようなコマンドはありません。
long:スクリプトを作成します。ここでは、トピックについて簡単に紹介します。
clear
プログラムは画面全体を消去します。シェルは新しいプロンプトを描画します(新しくクリアされた画面の一番上に表示されます)。しかし、の画面の一部をクリアしてからコマンドが完了した後、シェルに戻るとします。
ed
である、画面の最後に、現在のカーソル位置からクリアANSIエスケープシーケンスをサポートして使用することになり
ほとんどの端末:
ed=\E[J
として
infocmp
で示さ
clr_eos ed cd clear to end of
screen (P*)
。
あなたはtput
を使用して、例えば、スクリプトでそれを使用することができます。
tput ed
これは、「ANSI.SYSは」ANSI標準と異なり地域の一つである(実際にはECMA-48、8.3.29 ERASE IN PAGE
参照) 。 ansi.sys
は、それが
printf '\033]J'
を受信したときにスクリプトに何人かの人々をハードコードこの画面全体をクリアし、「ANSI.SYSは」標準と一致していることを前提としています。 ncurses FAQのHow do I get color with VT100?を参照してください。
これをテストする方法についてのコメントは表示されていません。プロンプトの下の画面に何も表示されない可能性があります。したがって、tput ed
と入力すると何も表示されないことがあります。上記のように、カーソルは以下のをクリアします。あなたは(2ライン)の上にプロンプトクリアしたい場合、それはもう少し複雑だ:カーソル位置
あなたのプロンプトが画面の最初の行にあることを起こる場合は、このはカーソル位置のレポートを使用して検出することができました。しかしそれは、表現されたような質問よりも複雑です。スペースは上記があることを想定します。消去のそのタイプのために定義された定義済みのterminfo(またはtermcapの)機能がありませんのでtput
が、ここで使用されている
tput sc
tput cuu 2
tput cub 999
printf '\033[1J'
tput rc
定期printf
のではなく。
あなたは、端末の一番上の行にプロンプトが起動ケースを処理したい場合は、現在の行に数を見つけ、上記の(またはしない)クリアを行うかどうかを判断する必要があると思います。
さらに読書:
'tput ed'や' printf '\ 033] J''は 'konsole'で作業しています。 –
'TPUTのed'も' printfの「\ 033] J''どちらも、ST(sucklessターミナル)で働いていました。どちらのコマンドも単純に復帰します。 xtermでは 'printf '\ 033] Jがハングします。 – Joe
私はそれが** 'CSI J' **ではなく** OSC J' **ですので、動作するとは思わないでしょう。 xtermは期待通りにそれを処理します。その点から、konsoleとtputに関するコメントは、いくつかの明確化が必要です(konsoleは期待通りに動作します...)。 –
クリアプロンプト、複数行を保持します... – 123
ああ、あなたは正しいです。私はC-lを使用していましたが、同じ動作をしません。私は彼らが同じだと思った。 – Joe