我可以发出clear命令或按Ctrl + L清除当前的Ubuntu终端,但这只是将先前的输出向上移动,如果使用鼠标滚动或PgUP和PgDown键,则很难区分先前命令的输出和输出当前命令开始。

是否有一种方法可以真正清除终端,所以我看不到先前的命令结果?

评论

按Ctrl + L两次,您会变成空白!

#1 楼

是的,您要查找的命令是
reset

clear或Ctrl + L相反,reset实际上将完全重新初始化终端,而不仅仅是清除屏幕。但是,它不会重新实例化外壳(bash)。这意味着bash的状态与以前相同,就像您只是在清除屏幕一样。
正如@Ponkadoodle在评论中提到的那样,此命令应该可以更快地完成相同的操作:
tput reset


从其他答案:


您可以将键盘快捷方式设置为reset终端,如towolf所述。


如果您正在运行Kubuntu,并且您的终端是Konsole,则您需要转到“编辑”→“清除历史记录”,因为reset在那里的工作方式不同,如UncleZeiv所述。



评论


对于大多数用户而言,可能无关紧要,但是重置的行为取决于终端。

–cthom06
2011-2-7 13:44

我个人不介意当我按下^ L时,滚动条上会残留一些东西。我没有看到它(这就是我想要的!),我没有感觉,如果突然之间,我将需要恢复那里的东西-没问题。相比之下,reset则难得多。当终端出现问题时,我将使用它,例如,奇怪的转义序列意外完全破坏了显示屏。

– ulidtko
2011-2-7 13:56

@ulidtko:当您连续运行具有大量输出的程序时,这很重要。如果向后滚动,很容易对哪个执行打印出内容感到困惑。我非常清楚,在这些情况下可以使用更复杂的解决方案,但是尽管如此,这种情况经常出现在快速且肮脏的调试会话中。

– UncleZeiv
2011年2月9日在12:49

还有tput reset,它显然可以做同样的事情,但是可以立即完成(而重置可能需要大约2秒钟的时间才能再次出现提示)。

– Ponkadoodle
16 Mar 4 '16 at 22:57

这将导致我的putty.exe窗口调整大小,如果没有这种情况,将很容易清除。

–void.pointer
17年8月3日在20:11

#2 楼

我已经寻找了一段时间,但发现了一些天才将其发布:

 clear && printf '\e[3J'
 


清除整个屏幕缓冲区,非常干净。可以在OS X上运行,并且相信它可以在大多数* nix终端上正常工作。

出于好奇,这部分'\e[3J'是终端转义命令。

评论


嗯,可以在xterm,Konsole和Linux VT中使用,但不能在gnome-terminal中使用...

–俄罗斯
2014年6月24日13:02

谢谢,这非常有用! printf'\ e [3J“是什么意思?如何清洁缓冲区?

–Filip Spiridonov
15年7月24日在17:03

很棒的发现!对于那些想要在Mac上重置Bash风格的用户:nano〜/ .bashrc并添加别名reset =“ clear && printf'\ e [3J'”

– Michael Deal
16年8月12日在5:43



注意别名重设-它不只是清除终端。例如,如果您不小心打印了带有随机垃圾的二进制文件,该垃圾会损坏终端机(例如,禁用键入字符的回显),则reset通常可以解决该问题。当然,只要您知道如何\ override别名阴影命令,别名就可以了。

– RubyTuesdayDONO
16-10-3在12:51

这是唯一通过绕线机访问SSH时清除Putty回滚的答案。

– dhaupin
17年1月19日15:56

#3 楼

您还可以通过转到编辑→键盘快捷方式在gnome-terminal中分配快捷方式。我使用Shift + Ctrl + Alt + C。



评论


+1。我总是隐藏菜单栏;因此,即使经过多年使用gnome,我也从未想过要寻找它。谢谢 :-)

– Stefano Palazzo
2011年2月9日在12:53



“重设”对我无济于事,“重设并清除”清除所有内容,但不重新显示提示。这些菜单项都不像终端上的“ reset”命令那样。

– Hibou57
2014年7月9日在8:50



正如@ Hibou57所说,我的“重置”键盘快捷键似乎没有任何作用。该功能在14.04中被破坏了吗?

–迈克尔·马丁·史密克(Michael Martin-Smucker)
2014年8月23日在20:37

“此功能在14.04中被破坏吗?”:与12.04相同。

– Hibou57
2014年8月24日在2:53

@ Hibou57“重置并清除”不希望重新显示提示,但是如果您随后按Enter,它将重新显示提示。那对你有用吗?

–唐·哈奇
16年11月9日,下午2:32

#4 楼

从stackoverflow交叉发布我的答案。

使用以下命令可以清晰显示屏幕,而不仅仅是添加新行...

printf "3c"


是的,这是bash提示符上的'printf'。

您可能希望通过以下方式定义别名...

alias cls='printf "3c"'


解释

 3 == \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

以上内容在KDE控制台(称为Konsole)上不起作用,但有希望!使用以下命令序列清除屏幕和后退缓冲区...

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


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

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


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

评论


这非常感谢

– alicanerdogan
1月17日15:20

#5 楼

运行以下命令:

reset


这与启动新终端的效果相同。

评论


使用腻子时,执行重置后,我仍然可以向上滚动并查看以前的内容。这是PuTTY的问题而不是重置的问题吗?

–Svish
2011-2-7 14:43



@svish-这只是油灰实施的问题或决定。

– Belacqua
2011-2-8 22:52

@jgbelacqua,交易:)

–Svish
2011年2月9日在9:27

与MAC OS终端一起使用

–比拉
19年1月11日,2:15

@Bira不,重置不会清除macOS 10.14 Mojave上的回滚。您可以尝试seq 100;重置以查看仍存在回滚。在macOS终端上,Cmd + K可以清除屏幕和向后滚动。

–约翰尼·王(Johnny Wong)
19年1月24日在4:23

#6 楼

我最喜欢的是printf "\ec"。也可以是printf "3c"printf "\x1bc"。这是一个ansi转义序列,可以奇迹般地清除终端输出的屏幕和缓冲区(对于我在其中工作过的大多数标准终端而言,我似乎都知道-我知道它可以在类似Ubuntu的gnome-terminal,terminator,xterm等中运行) Linuxes)

我知道这可以在Linux Mint和Ubuntu 14.04中使用,所以我不知道为什么人们会添加和添加clear && echo -ne "3c之类的内容。 printf "\ec"一直为我工作。

另外,在我的.bashrc中,我有一个这样的绑定:

bind -x '"\C-t": printf "\ec"';


现在我按下ctrlt时间。

评论


您知道如何使用Windows键创建映射吗?这个代码片段非常棒,与Mac上的Command-K完全一样。谢谢。

–零蛋
17年1月12日在15:47

@Niloct,您可以看到终端是否支持xev(只需在x会话内的终端中键入xev)。据我所知,urxvt不支持它。虽然我没有尝试过tty,但我相信它不会得到支持。我也怀疑xterm或gnome-terminal是否会支持这一点。使用ansi换码很棘手。欢呼声和对不起您的回复。

– dylnmc
17年2月3日,17:34



好吧@dylnmc,我非常感谢。感谢您的评论。

–零蛋
17年2月3日在18:19

#7 楼

好吧,这确实取决于您是否使用Konsole,即使reset也不妨碍您滚动到第一行。在这种情况下,您必须使用正在使用的特定终端的某些功能。对于Konsole,它是Edit > Clear History

#8 楼

我发现使用Kubuntu可以取得以下成功:

alias clc="echo -en '3c3[3J'"


您可以使用cls来保持Windows传统,使用Matlab版本clc或您的其中一个拥有。祝你好运!

#9 楼

除了reset之外,您还可以执行echo -e "3c",或者在.bashrc中添加类似alias cls="echo -ne '3c'"之类的东西。UNIX / Linux StackExchange上有一个线程:如何完全清除终端? (unix.stackexchange.com)以及SuperUser:使用键盘快捷键(superuser.com)清除终端。

#10 楼

@ Hibou57答案的另一种替代方法:

# The Octal Way
alias clear="echo -e '3c\c'"


OR

# The Hex Way
alias clear="echo -e '\x1b\c'"


基本上这将完全相同效果,它将打印^[字符(这将清除您的终端),并且不会输出结尾的换行符。

评论


轻微校正:先打印^ [字符(ESC),然后打印c字符,而不仅仅是^ [字符。这些总和等于“ RIS”终端代码,将导致复位。更多信息:xfree86.org/4.8.0/ctlseqs.html

– jwd
17-10-11在15:29



#11 楼

如果您使用的是yakuake或Konsole,请尝试
Ctrl + Shift + K。

来源:https://bugs.kde.org/show_bug.cgi?id=309008

#12 楼

您可以通过以下所有方法清除Unix中的终端屏幕:

clear               # only clear visible screen
clear && clear      # clear buffer as well
tput clear          # same as clear but by sending escape seq
reset               # clear + reset internal terminal state + 1sec delay
tput reset          # same as reset but without 1sec delay
stty sane           # don't clear screen but reset some terminal options
echo -e "3c"     # same as tput reset but hardcoded escape seq
printf "3c"      # same as tput reset but hardcoded escape seq
setterm -reset      # same as tput reset, setterm has friendlier commands