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

标签 linux console tty

我想以编程方式清除 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/

相关文章:

linux - 使用 If/Then/Else 语句整合 Bash 脚本

linux - 用于监视磁盘 IO 的 shell 脚本无法正常工作

javascript - 直接访问属性显示的值与对象控制台输出不同

php - ajax 时钟上的 net::ERR_INSUFFICIENT_RESOURCES 错误

c - 无法从串口获取数据结构

linux - 嵌入式 linux,tty 在引导期间不工作

linux - 在 Raspberry Pi 3 板上构建驱动程序时出错

linux - 如何在 makefile 中指定将结果发送到哪里

ruby-on-rails - 如何在运行rails控制台时手动设置ENV变量

docker - 构建Docker镜像时无法写入 '/dev/tty'