使用clear
终端上的命令只会使用户误以为屏幕已清除...当您使用鼠标滚动时,仍可以看到以前命令的输出。当您淹没在文本海啸中时,这将使生活变得困难。
可以在Internet上找到的各种解决方案(转义码等)只是clear命令已经完成的工作的变体。
那么,如何真正清除Linux中终端的内容呢?
使用clear
终端上的命令只会使用户误以为屏幕已清除...当您使用鼠标滚动时,仍可以看到以前命令的输出。当您淹没在文本海啸中时,这将使生活变得困难。
可以在Internet上找到的各种解决方案(转义码等)只是clear命令已经完成的工作的变体。
那么,如何真正清除Linux中终端的内容呢?
Answers:
使用以下命令可以清晰显示屏幕,而不仅仅是添加新行...
printf "\033c"
是的,这是bash提示上的“ printf”。
您可能会想要定义一个别名...
alias cls='printf "\033c"'
\033 == \x1B == 27 == ESC
因此,这<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控制台(称为Konsole)上不起作用,但是有希望!使用以下命令序列清除屏幕和向后滚动缓冲区...
clear && echo -en "\e[3J"
或者在KDE上使用以下别名...
alias cls='clear && echo -en "\e[3J"'
我从这里得到了回滚清除命令。
"\033c"
是ESC c
它是“完全复位(RIS)”的VT-XXX转义序列。这些天人们实际使用的几乎所有终端都兼容VT,但是,如果您发现自己使用的是奇怪的终端,则可能无法正常工作。假设TERM设置正确,@ vpit3833的答案更有可能起作用。
printf
是Bash内置函数(确实它也是一个单独的二进制文件,但是内置函数具有优先级,大多数现代shell都有printf
)。
尝试reset
。它清除了终端屏幕,但是可以通过箭头或任何具有键绑定的方式访问先前的命令。
ESC c
因为我可能永远不会使用Ubuntu以外的任何终端。虽然reset
可能有一天会在我通过串行端口等调试远程计算机时派上用场
reset
对我来说是无法承受的。
tput reset
那会成功的!
reset
,但仍能完成任务!
reset
在PuTTY中,我所读的答案均无效,因此我对本文发表了评论:
在连接的设置中,在“窗口->行为”下,您将找到“仅在ALT上出现系统菜单”设置。然后CTRL + L,ALT,l(小写的L)将滚动屏幕,然后清除回滚缓冲区。
(与OP有关,因为我正在连接到Ubuntu服务器,但无论您的服务器在运行什么,显然也都与之相关。)
CTRL+L
那么ALT+Space
,U
它首先清除终端窗口,然后真正的重置回滚。
以下链接将说明如何使该别名永久化,这样您就不必继续输入它。
/ubuntu/17536/how-do-i-create-a-permanent-bash-alias
这些是该链接上详细介绍的步骤。
我不相信这些信息只是将其传递。
使用KDE和Ubuntu 12.04 LTS和“ Konsole”终端,所有发布的答案均无效。但是,按默认键盘快捷键CTRL + Shift + X确实可以!资源:
我知道不支持采用新行打印的解决方案,但是如果其他所有方法都失败了,为什么不呢?尤其是在一个人可能会看到屏幕但无法进行键盘记录的环境中操作的情况下。那么,一种可能的解决方案是以下别名:
alias c="printf '\r\n%.0s' {1..50}"
然后,要“清除”屏幕的当前内容(或隐藏它们),只需c+Enter
在终端上键入。
只是要添加tmux
滚动缓冲clear
,reset
否则不能用或清除printf
。您需要:clear-history
。见链接。
echo -e "\e[3J"
这适用于Linux机器
编译这个程序。
#include <iostream>
#include <cstring>
int main()
{
char str[1000];
memset(str, '\n', 999);
str[999] = 0;
std::cout << str << std::endl;
return 0;
}