问题描述
我可以发出clear
命令或按Ctrl
+ L
清除当前的Ubuntu终端,但这只是向上移动以前的输出,如果使用鼠标滚动或PgUP
和PgDown
键,很难区分前一个命令的输出结束和输出当前命令开始。
有没有办法真正清除终端,所以我不会看到以前的命令结果?
最佳解决方法
是的,你正在寻找的命令是
reset
与clear
或Ctrl
+ L
相反,reset
实际上完全是re-initialise terminal,而不是仅仅清除屏幕。但是,它不会re-instantiate shell(bash)。这意味着bash的状态与以前一样,就好像你只是清理屏幕一样。
正如@Wallacoloo在评论中提到的那样,这个命令应该更快地做同样的事情:
tput reset
从其他答案:
-
正如towolf所解释的那样,您可以将终端的键盘快捷键设置为
reset
。 -
如果您运行的是Kubuntu,并且您的终端是Konsole,则需要转到编辑→清除历史记录,因为
reset
在那里的工作方式与as UncleZeiv notes不同。
次佳解决方法
我正在寻找这一段时间,我发现一些天才发布了这个:
clear && printf '\e[3J'
清除整个屏幕缓冲区,非常干净。在OSX上工作,并认为它在大多数* nix终端上工作正常。
我希望有人发现像我一样有用:)
第三种解决方法
您也可以通过编辑→键盘快捷键在gnome-terminal中分配快捷键。我使用Shift
+ Ctrl
+ Alt
+ C
。
第四种方法
运行这个命令:
reset
这与启动新终端的效果相同。
第五种方法
交叉发布我的答案stackoverflow。
使用下面的命令来做一个清晰的屏幕,而不是仅仅添加新行……
printf "\033c"
是的,这是在bash提示符下的’printf’。
你可能想要定义一个别名,尽管…
alias cls='printf "\033c"'
Explanation
\033 == \x1B == 27 == ESC
所以这成为<ESC>c
这是用于重置终端的VT100转义码。 Here是关于终端转义码的更多信息。
Edit
这里有一些其他的做法…
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),但有希望!使用以下命令序列清除屏幕和scroll-back缓冲区…
clear && echo -en "\e[3J"
或者也许在KDE上使用以下别名…
alias cls='clear && echo -en "\e[3J"'
我从here获得了scroll-back清除命令。
第六种方法
那么这取决于你是否使用Konsole
,即使reset
也不会阻止你滚动到第一行。在这种情况下,您必须使用您正在使用的特定终端的某些功能。对于Konsole
,它是Edit > Clear History
。
第七种方法
我最喜欢的是printf "\ec"
。这也可以是printf "\033c"
或printf "\x1bc"
。这是一个ansi转义序列,它奇迹般地清除了终端输出的屏幕和缓冲区(对于大多数标准终端,我似乎已经工作了 – 我知道它适用于Ubuntu-like Linuxes中的gnome-terminal,终止符,xterm等)
我知道这可以在Linux Mint和Ubuntu 14.04上运行,所以我不知道人们为什么要追加和预先配置clear && echo -ne "\033c
。 printf "\ec"
一直为我工作。
另外,在我的.bashrc
中,我有这样的绑定:
bind -x '"\C-t": printf "\ec"';
现在我一直按ctrl
t
。
第八种方法
或者对于reset
,您可以执行echo -e "\033c"
,或者在您的.bashrc
中执行alias cls="echo -ne '\033c'"
UNIX /Linux StackExchange上有一个线程:How to clear terminal completely? (unix.stackexchange.com),以及超级用户:Clear terminal using keyboard shortcut (superuser.com)。
第九种方法
Hibou57答案的另一种选择:
# The Octal Way
alias clear="echo -e '\033c\c'"
要么
# The Hex Way
alias clear="echo -e '\x1b\c'"
基本上这将具有完全相同的效果,它将打印^[
字符(清除您的终端)并且不输出尾随的新行。