【问题标题】:clear terminal screen but keep visual spacing清除终端屏幕但保持视觉间距
【发布时间】:2025-12-26 01:30:18
【问题描述】:

当我想在命令的一长串输出行之后提供视觉中断时,我通常运行 clear 以便终端将清除屏幕,将我的提示符放回 0,0 同时保留历史记录(与reset)。

问题是,当我向上滚动时,终端现在又回到了长长的输出行,没有任何历史中断。

我有通过yes '' | head -n $(tput lines) 来“回显屏幕上的空行”的想法,但是我的光标位于屏幕底部。所以我尝试运行clear,但它似乎删除了空行。我也试过tput cup 0 0,但这也删除了空行(我猜是通过“恢复”我的屏幕上的空行)。

我可以通过打印带有yes 的任何字符而不是空字符串来强制空行,或者我可以在空行的末尾打印一些字符/消息。但是现在我在添加垃圾。

我唯一能够开始工作的是:

yes '' | head -n $(($(tput lines) * 2))
tput cup 0 0

还有其他方法还是我唯一的选择?

【问题讨论】:

    标签: unix terminal tput


    【解决方案1】:

    基本上是的——你可以用各种方式来表达脚本,但是大多数终端不允许有一个方面可以用来改进你的脚本:向上滚动时,它们不会将空白行移动到滚动条中。所以你不能(例如)这样做:

    tput cup $(tput lines)
    tput indn $(($(tput lines) * 2))
    tput cup 0 0
    tput ed
    

    因为您期望来自indn(索引)的空行被忽略了。

    【讨论】: