Shell-Script
bash:清除兩個位置之間的字元串
我需要清除兩個位置之間的終端字元串(不是行首或行尾)。例如,刪除所有 from
tput cup 5 10
和 untiltput cup 5 69
。一條線。是的,可以簡單地
echo
通過整個區域的空格,但是,也許,有更好的方法嗎?類似於clear 10 69
目前游標行位置的東西。
您正在尋找擦除字元控制序列。
tput cup 5 10 ; tput ech 59
這不應與刪除字元混淆。
tput cup 5 10 ; tput dch 59
擦除用空白覆蓋。刪除將向左移動該行的其餘部分。
如前所述,
ech
(擦除字元)是可行的方法——當它起作用時。這是 VT102 附帶的,因此您將使用的大多數終端都提供該功能。對於 ncurses 的終端描述,顏色存在問題:rxvt 的開發人員在 1995-1996 年對清除背景顏色的想法使用了不同的解釋,並且沒有(如 Linux 控制台和 xterm 那樣)將擦除與**清除相同。因此
ech
使用預設顏色清除,而ed
( erase display ) 使用目前 ANSI 顏色清除。ech
由於這個原因,ncurses 終端描述被省略了。同樣的問題適用於從該來源派生的所有程序。進一步閱讀:
- 我的終端顯示一些無色空間
- terminfo - 終端能力數據庫,你可以使用
tput
和**cup
能力ech
**:cursor_address cup cm 移動到第 1 行第 2 列 erase_chars ech ec 擦除 #1 個字元 (P)