web-dev-qa-db-ja.com

コマンドラインから画面の半分をクリアする

ターミナルをクリアする方法はありますか?プロンプトを画面上部に残す代わりに、プロンプトを中央に残しますか? clearは基本的にすべてのコマンドラインパラメータを無視するように見えます。

tputを使用してこれを行う方法はいくつかあると思いましたが、見つかりません。

11
fizzyh2o

tputを使用して、カーソルを画面の特定の行に移動できます。たとえば、

tput cup 11 0

それを12行目に移動します(値はゼロからカウントされます)。

同じように、tput機能を使用すると、edを使用して、その位置から画面の最後までクリアできます。組み合わせる

tput cup 11 0 && tput ed

欲しかったのかもしれません。

画面の途中のマークに移動したい場合は、

stty size

(ほとんどのシステムでは)画面の行数です。それをコマンドに追加します。

tput cup $(stty size|awk '{print int($1/2);}') 0 && tput ed

clearプログラムはtput edとは異なります:

  • カーソルをhome位置(左上)に移動し、
  • その時点から画面の最後までクリアします。

警告:一部のプラットフォームでは tput ed はかなり前に修正された問題のために機能しない場合があります。このような場合、curses/ncurses構成をアップグレードすると問題が解決します。

12
Thomas Dickey

行数が奇数の場合、tput cupはページ全体をクリアします。
これを次のように書くと修正されます:

tput cup $(($(stty size|awk '{print $1}')/2)) 0 && tput ed
0
Farzad Sadeghi