我的脚本回显一些文本并进行进一步处理。使用 tput 我想清除屏幕并保留屏幕上的第一行。
例如。
echo Started
seq 1000
tput cup 1 0 && tput ed
这样 Started 仍保留在屏幕上,其他所有内容都被清除,但它仅在输出较小(如 seq 10)时有效,但不适用于较长的滚动输出
答案1
有些终端允许您定义滚动区域:
tput csr 1 "$(( ${LINES:-$(tput lines)} - 1 ))"
tput clear
echo Started
seq 1000
设置从第二行到最后一行的滚动区域,以便“开始”行不会滚动到屏幕之外。进而:
tput cup 1 0 && tput ed
再次清除第二行到最后一行。
详细信息请参见 terminfo(5)。
从版本 608 开始,less
还有一个--header=lines[,cols]
选项允许指定不滚动的标题行:
{
echo Started; seq 1000
} | less --header=1
您可以添加-X
输出选项,包括less
返回后保留在屏幕上的标题。另请参阅允许图形再现转义序列的-R
选项,以及如果输入适合屏幕则不分页的选项。less
-F