清除Linux虚拟控制台终端的回滚缓冲区

use*_*104 5 linux console clear tty

我想以编程方式清除Linux控制台VT上的回滚缓冲区.即不仅清除当前可见屏幕,还清除整个回滚缓冲区.也就是说,使用Alt-PgUp仍然可以看到清晰屏幕之后的所有内容也应该消失.有人知道如何用漂亮的代码实现这一目标吗?

nin*_*alj 6

我不认为这是在主线,但linux-next有一个补丁,支持一个新的控制台转义序列,清除屏幕回滚缓冲区:CSI 3 J

对于无需升级内核即可运行的东西,您可以使用:

chvt 42; chvt <current tty no>; echo -en "\e[1;1H\e[2J"
Run Code Online (Sandbox Code Playgroud)

或者:

echo -e "\e[12;42]"; sleep .01; echo -en "\e[12;<current tty no>]\e[1;1H\e[2J"
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式获取当前的tty号码:

$( ls -l /proc/self/fd | sed -ne 's/.*tty//p' )
Run Code Online (Sandbox Code Playgroud)