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内置(它是