0

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

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

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

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

我唯一能够上班的是:

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

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

4

1 回答 1

0

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

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

因为您期望indn(index) 中的空白行被忽略。

于 2017-01-10T23:56:57.260 回答