我想以编程方式清除 Linux 控制台 VT 上的回滚缓冲区。即不仅清除当前可见屏幕,还清除整个回滚缓冲区。即,在使用 Alt-PgUp 后仍然可以看到清晰屏幕的所有内容也应该消失。有人知道如何用漂亮的代码实现这一目标吗?
问问题
6589 次
3 回答
6
我认为这还不是主线,但是linux-next有一个补丁来支持一个新的控制台转义序列,它可以清除屏幕和回滚缓冲区:CSI 3 J
对于无需升级内核即可工作的东西,您可以使用:
chvt 42; chvt <current tty no>; echo -en "\e[1;1H\e[2J"
或者:
echo -e "\e[12;42]"; sleep .01; echo -en "\e[12;<current tty no>]\e[1;1H\e[2J"
您可以通过以下方式获取当前的 tty 号码:
$( ls -l /proc/self/fd | sed -ne 's/.*tty//p' )
于 2011-05-18T00:02:40.877 回答
1
请记住,其他工具(例如通过 ssh)将具有不同的“回滚缓冲区”实现。我非常怀疑您是否可以通过机器中的代码清理腻子缓冲区。另请参阅https://superuser.com/questions/122911/bash-reset-and-clear-commands
于 2011-05-17T20:42:27.230 回答
0
这会清除屏幕,但不会回滚。
echo -e '\0033\0143'
#取决于您使用的终端模拟器,在 gnome 终端上测试
来自https://superuser.com/questions/122911/bash-reset-and-clear-commands
于 2011-05-17T20:45:57.200 回答