【发布时间】:2011-08-27 13:37:16
【问题描述】:
我想以编程方式清除 Linux 控制台 VT 上的回滚缓冲区。即不仅清除当前可见屏幕,还清除整个回滚缓冲区。 IE。使用 Alt-PgUp 清除屏幕后仍然可见的所有内容也应该消失。有人知道如何用漂亮的代码实现这一点吗?
【问题讨论】:
-
警告:该用户投反对票很高兴,在这里回答后果自负。
-
@richard:我喜欢危险地生活。
我想以编程方式清除 Linux 控制台 VT 上的回滚缓冲区。即不仅清除当前可见屏幕,还清除整个回滚缓冲区。 IE。使用 Alt-PgUp 清除屏幕后仍然可见的所有内容也应该消失。有人知道如何用漂亮的代码实现这一点吗?
【问题讨论】:
请记住,其他工具(例如通过 ssh)将有不同的“回滚缓冲区”实现。我非常怀疑您是否可以通过机器中的代码清理腻子缓冲区。 另见https://superuser.com/questions/122911/bash-reset-and-clear-commands
【讨论】:
这会清除屏幕,但不会回滚。
echo -e '\0033\0143' #取决于你使用的终端模拟器,在gnome终端上测试过
来自https://superuser.com/questions/122911/bash-reset-and-clear-commands
【讨论】:
我不认为这是在主线中,但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' )
【讨论】:
echo -en "\e[3J" 就可以了。
\e[ 是 7 位 CSI。