我想以编程方式清除 Linux 控制台 VT 上的回滚缓冲区。即不仅清除当前可见屏幕,还清除整个回滚缓冲区。 IE。清除屏幕后使用 Alt-PgUp 仍然可见的所有内容也应该消失。有人知道如何用漂亮的代码实现这一点吗?
最佳答案
我认为这还没有进入主线,但是 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' )
关于linux - 清除 Linux 虚拟控制台终端的回滚缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036829/