清除终端屏幕真实

Aut*_*act 362 linux terminal ubuntu gnome-terminal konsole

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

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

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

Aut*_*act 484

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

printf "\033c"
Run Code Online (Sandbox Code Playgroud)

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

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

alias cls='printf "\033c"'
Run Code Online (Sandbox Code Playgroud)

说明

\033 == \x1B == 27 == ESC
Run Code Online (Sandbox Code Playgroud)

因此,这成为<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
Run Code Online (Sandbox Code Playgroud)

KDE

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

clear && echo -en "\e[3J"
Run Code Online (Sandbox Code Playgroud)

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

alias cls='clear && echo -en "\e[3J"'
Run Code Online (Sandbox Code Playgroud)

我从这里得到了回滚清除命令.

  • echo -en"\ 033c" (12认同)
  • 这实际上是终端特定的.`"\ 033c"`是`ESC c`,它是"完全复位(RIS)"的VT-XXX转义序列.几乎所有实际使用这些天的终端都与VT兼容,但是如果你发现自己使用了一个奇怪的终端,这可能行不通.假设TERM设置正确,@ vpit3833的答案更有可能发挥作用. (4认同)
  • `printf`是一个内置的Bash(确实它也是一个单独的二进制文件,但内置函数具有优先权,大多数现代shell都有`printf`). (2认同)
  • @ SDX2000 OK ...我知道你指定了Ubuntu,我认为这些在所有"现代"终端仿真器上都会表现得相似.我最初在我的MAC终端上进行了测试,它没有在那里重置,但它在我的Centos Linux上重置了. (2认同)
  • 几年后0.02美元,但我是CU的学生.问我的操作系统教授,他说这是ANSI转义序列的一个例子:https://en.wikipedia.org/wiki/ANSI_escape_code这是带内信令的一个例子. (2认同)

vpi*_*833 206

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

  • @ SDX2000清除提示符,然后shell生成一个新提示符.重置的一个缺点是它似乎有点慢(可能因为它不仅仅发出ESC c),但它更便携. (5认同)
  • 与"重置"相关的一秒延迟对我来说是难以忍受的. (4认同)
  • 谢谢!但它清除包括提示在内的所有事情.请参阅我的答案,找到不能解决的问题. (3认同)
  • 这应该是默认答案恕我直言。印刷的幻数永远不是答案 (2认同)

小智 52

tput reset
Run Code Online (Sandbox Code Playgroud)

那就行了!

  • 执行速度比简单的“重置”快得多,但仍然可以完成工作! (4认同)
  • 为什么它更快的解释:[为什么``reset``命令包含延迟?](https://unix.stackexchange.com/q/335648/178186) (4认同)
  • 比“重置”更快 (2认同)

Mir*_*din 8

  1. 清洁可视屏幕

     clear 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 清洁屏幕并清除缓冲区

     clear && clear 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 干净且 1 秒延迟

     reset
    
    Run Code Online (Sandbox Code Playgroud)
  4. 清理无1秒延迟

     tput reset
    
    Run Code Online (Sandbox Code Playgroud)


Tec*_*rat 7

我读过的所有答案都没有在PuTTY中工作,所以我发现了对这篇文章的评论:

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

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


N1m*_*r0d 6

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

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

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

  1. vim~/.bashrc或gedit~/.bashrc或者你喜欢的文本编辑器
  2. 将别名cls ='printf"\ 033c"'放在文件的底部
  3. 保存并退出
  4. .〜/ .bashrc(是的,应该有.和〜之间的空格)
  5. 现在检查一下是否一切正常!

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


nem*_*ixx 6

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

alias c="printf '\r\n%.0s' {1..50}"
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

reset
Run Code Online (Sandbox Code Playgroud)

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

欢呼声:D


dz9*_*902 5

只是补充一点,tmux滚动缓冲区不会用clear,reset或清除printf。你需要:clear-history。请参阅链接