web-dev-qa-db-ja.com

bash:2つの位置の間の文字列をクリアします

(行の先頭または末尾ではなく)2つの位置の間の端末の文字列をクリアする必要があります。たとえば、tput cup 5 10からtput cup 5 69までのすべてを削除します。 1行。

はい、この領域全体をスペースで単純にechoすることは可能ですが、もっと良い方法はありますか?現在のカーソル行位置のclear 10 69のようなもの。

1
Someone

文字の消去制御シーケンスを探しています。

tput cup 5 10 ; tput ech 59

これを文字を削除と混同しないでください。

tput cup 5 10 ; tput dch 59

消去は空白で上書きします。削除すると、残りの行が左に移動します。

4
JdeBP

前述のように、ech文字の消去)は、機能する場合の方法です。これはVT102に付属しているため、使用するほとんどの端末がこの機能を提供します。

Ncursesからの端末の説明については、色に問題があります。1995〜 1996年のrxvtの開発者は、背景色のクリアに関するアイデアの異なる解釈を使用し、(Linuxコンソールおよびxtermのように)消去を処理しませんでしたclearingと同じです。したがって、echはデフォルトの色でクリアされ、ederase display)は現在のANSIカラーでクリアされます。このため、ncurses端末の説明ではechが省略されています。同じ問題が、そのソースから派生したすべてのプログラムに当てはまります。

参考文献:

 cursor_address cup cmは行#1列#2に移動します
 
 erase_chars ech ecerase#1文字(P)
2
Thomas Dickey