首页 文章

清除终端屏幕真实

提问于
浏览
318

在终端上使用 clear 命令只会欺骗用户认为屏幕已被清除...当您使用鼠标滚动时,您仍然可以看到之前命令的输出 . 当你淹没在海啸的文字中时,这会让生活变得困难 .

可以在因特网上找到的各种解决方案(转义码等)只是clear命令已经做的变化 .

那么如何清除Linux中终端的内容呢?

10 回答

  • 453

    使用以下命令执行清除屏幕而不是仅添加新行...

    printf "\033c"
    

    是的,这是bash提示符下的'printf' .

    你可能想要定义一个别名......

    alias cls='printf "\033c"'
    

    解释

    \033 == \x1B == 27 == ESC
    

    所以这变成 <ESC>c ,这是用于重置终端的VT100转义码 . Here是有关终端转义码的更多信息 .

    编辑

    以下是其他一些方法......

    printf "\ec" #\e is ESC in bash
    echo -en "\ec" #thanks @Jonathon Reinhart.
    # -e    Enable interpretation of of backslash escapes
    # -n    Do not output a new line
    

    KDE

    以上不适用于KDE控制台(称为Konsole),但有希望!使用以下命令序列清除屏幕和回滚缓冲区...

    clear && echo -en "\e[3J"
    

    或者在KDE上使用以下别名......

    alias cls='clear && echo -en "\e[3J"'
    

    我从here获得了回滚清除命令 .

  • 37

    试试 reset . 它会清除终端屏幕,但可以通过箭头或您拥有的任何键绑定来访问以前的命令 .

  • -49
    tput reset
    

    那就行了!

  • 7

    我读过的所有答案都没有在PuTTY中工作,所以我在this article上发表了评论:

    在连接设置中,在“窗口 - >行为”下,您将找到“系统菜单仅在ALT上显示”的设置 . 然后按CTRL L,ALT,l(这是一个小写的L)将滚动屏幕,然后清除回滚缓冲区 .

    (与OP相关,因为我连接到Ubuntu服务器,但无论你的服务器运行什么,它显然都很相关 . )

  • 6

    以下链接将解释如何将该别名设为永久性,以便您不必继续输入该别名 .

    https://askubuntu.com/questions/17536/how-do-i-create-a-permanent-bash-alias

    这些是该链接详述的步骤 .

    • vim~ / .bashrc或gedit~ / .bashrc或者你喜欢的文本编辑器

    • 将别名cls = 'printf 1852072 '放在文件的底部

    • 保存并退出

    • . 〜/ .bashrc(是的,应该有 . 和〜之间的空格)

    • 现在检查一下是否一切正常!

    我不相信这些信息只是传递它 .

  • -1

    我最喜欢的人性友好命令是:

    reset
    

    在xterm和VT100上测试过 . 在异常程序终止后它也有帮助 . 保留命令缓冲区,因此向上箭头将循环显示以前的命令 .

    欢呼声:D

  • 185

    使用KDE和Ubuntu 12.04 LTS以及“Konsole”终端,所有发布的答案都不起作用 . 但是,按默认键盘快捷键CTRL Shift X确实有效!资源:

    https://bugs.kde.org/show_bug.cgi?id=288913

  • 5

    我知道采用新线印刷的解决方案不太受支持,但如果一切都失败了,为什么不呢?特别是在其他人可能能够看到屏幕的环境中操作,但却无法使用键盘记录 . 一个可能的解决方案是以下别名:

    alias c="printf '\r\n%.0s' {1..50}"
    

    然后,到"clear"离开屏幕的当前内容(或者更确切地说,隐藏它们),只需在终端输入 c+Enter 即可 .

  • 1
    echo -e "\e[3J"
    

    这适用于Linux机器

  • 3

    编译这个应用程序 .

    #include <iostream>
    #include <cstring>
    
    int main()
    {
      char str[1000];
      memset(str, '\n', 999);
      str[999] = 0;
      std::cout << str << std::endl;
      return 0;
    }
    

相关问题