【问题标题】:clear scrollback buffer of Linux Virtual Console Terminals清除 Linux 虚拟控制台终端的回滚缓冲区
【发布时间】:2011-08-27 13:37:16
【问题描述】:

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

【问题讨论】:

  • 警告:该用户投反对票很高兴,在这里回答后果自负。
  • @richard:我喜欢危险地生活。

标签: linux console tty


【解决方案1】:

请记住,其他工具(例如通过 ssh)将有不同的“回滚缓冲区”实现。我非常怀疑您是否可以通过机器中的代码清理腻子缓冲区。 另见https://superuser.com/questions/122911/bash-reset-and-clear-commands

【讨论】:

  • 我只关心 Linux 控制台虚拟终端。没有别的了。
  • @user175104 您没有在问题中指定,但足够公平
【解决方案2】:

这会清除屏幕,但不会回滚。

echo -e '\0033\0143' #取决于你使用的终端模拟器,在gnome终端上测试过

来自https://superuser.com/questions/122911/bash-reset-and-clear-commands

【讨论】:

    【解决方案3】:

    我不认为这是在主线中,但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" 就可以了。
    • @edA-qamort-ora-y:是的,\e[ 是 7 位 CSI
    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多