Linux 清除一个终端屏幕以进行真正的操作

Linux 清除一个终端屏幕以进行真正的操作,linux,ubuntu,terminal,gnome-terminal,konsole,Linux,Ubuntu,Terminal,Gnome Terminal,Konsole,在终端上使用clear命令只能愚弄用户,使其认为屏幕已被清除……当您使用鼠标滚动时,仍然可以看到以前命令的输出。当你淹没在文字的海啸中时,这使生活变得困难 可以在互联网上找到的各种解决方案(转义码等)只是clear命令已经完成的工作的变体 那么,如何在Linux中真正清除终端的内容呢?试试reset。它会清除终端屏幕,但可以通过箭头键或任何键绑定访问以前的命令。使用以下命令来清除屏幕,而不仅仅是添加新行 printf "\033c" 是的,bash提示符上有一个“printf” 不过,您可能需

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

可以在互联网上找到的各种解决方案(转义码等)只是clear命令已经完成的工作的变体


那么,如何在Linux中真正清除终端的内容呢?

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

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

printf "\033c"
是的,bash提示符上有一个“printf”

不过,您可能需要定义一个别名

alias cls='printf "\033c"'
解释
\033==\x1B==27==ESC
因此这就变成了
c
,这是重置终端的VT100转义码。是关于终端转义码的更多信息

编辑 这里有一些其他的方法

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"'
我从中获得了回滚清除命令。

编译此应用程序

#include <iostream>
#include <cstring>

int main()
{
  char str[1000];
  memset(str, '\n', 999);
  str[999] = 0;
  std::cout << str << std::endl;
  return 0;
}
#包括
#包括
int main()
{
char-str[1000];
memset(str,'\n',999);
str[999]=0;

std::cout对于KDE和Ubuntu 12.04 LTS以及“Konsole”终端,发布的答案都不起作用。但是,按默认键盘快捷键CTRL+Shift+X确实有效!来源:


以下链接将解释如何使别名永久化,这样您就不必一直键入别名

以下是该链接中详细介绍的步骤

  • vim~/.bashrc或gedit~/.bashrc或任何您喜欢的文本编辑器
  • 将别名cls='printf“\033c”放在文件底部
  • 保存并退出
  • .~/.bashrc(是的,.and~之间应该有一个空格)
  • 现在检查一下是否一切正常

  • 我只是把这些信息传递给别人,并不认为这是我的功劳。

    我读到的答案中没有一个是用油灰做的,所以我在下面找到了一条评论:

    在连接的设置中,在“窗口->行为”下,您会发现一个设置“系统菜单仅在ALT上显示”。然后CTRL+L、ALT、L(小写L)将滚动屏幕,然后清除滚动缓冲区

    (与OP相关,因为我正在连接Ubuntu服务器,但无论您的服务器在运行什么,显然也与OP相关。)


    这就可以了!

    我最喜欢的人性化命令是:

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

    echo -e "\e[3J"
    

    这适用于Linux机器

    我知道采用打印新行的解决方案不太受支持,但如果所有其他解决方案都失败了,为什么不呢?尤其是在其他人可能看到屏幕但无法记录键盘的环境中操作时。一个潜在的解决方案是以下别名:

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

    然后,要“清除”屏幕的当前内容(或者更确切地说,隐藏它们),只需在终端键入
    c+Enter

    只需添加
    tmux
    滚动缓冲区不清除
    clear
    reset
    printf
    。您需要
    :清除历史记录
    。请参阅

  • 清洁可见屏幕

     clear 
    
  • 清洁屏幕,清除缓冲区

     clear && clear 
    
  • 清洁和1秒延迟

     reset
    
     tput reset
    
  • 清洁无需1秒延迟

     reset
    
     tput reset
    

  • 谢谢!但它会清除包括提示在内的所有内容。请参阅我的答案,以获得一个不执行此操作的解决方案。@SDX2000都会清除提示,然后shell会生成一个新的提示。重置的一个缺点是它似乎有点慢(可能是因为它不仅仅发出ESC c)但它更便于携带。@SDX2000 reset也适用于因杀死某些东西(或破坏二进制文件)而导致终端严重损坏的情况它使您的术语处于损坏状态。是否曾经进入这样一种状态:您的提示符显示,但您的键入不显示,当您点击“输入”时,新的提示符显示在前一个提示符旁边而不是下方?重置修复了这一点。实际上,这就是我使用它的全部目的……我从来没有需要/希望清除我的滚动回缓冲区。一秒钟的延迟与
    重置相关联的
    对我来说是无法忍受的。这应该是默认答案imho。打印的幻数从来都不是答案。我会将其归类为“程序员常用的软件工具”(在常见问题解答中提到为有效)。你真正要问的是“我如何清除终端的回滚缓冲区?”它独立于shell(Bash)或Ubuntu。@spiderplant0可能是因为AskUbuntu在这个时候是合适的地方。当被问到这个问题时,它并不存在,所以它被作为主题关闭了,尽管事实并非如此。这是一个更一般的问题,不仅影响Ubuntu或Bash,正如@Dennis所说。我要改变主题“为real清除Ubuntu bash屏幕”->“为real清除终端屏幕”有许多不同的终端类型,您可以使用它们运行bash(术语“bash终端”毫无意义)。“清除”“不适用于所有这些情况-有时,最接近的近似方法是撕开纸张,并将不需要的部分装入/撕碎/烧掉/销毁。这实际上是终端特定的。
    ”\033c“
    ESC c
    ,它是“完全重置(RIS)”的VT-XXX转义序列”。现在人们实际上使用的几乎所有终端都是VT兼容的,但如果你发现自己使用的是一个奇怪的终端,这可能不起作用。@vpit3833的答案更有可能在假设术语设置正确的情况下起作用。
    printf
    是一个Bash内置(它是