当前位置: 首页>>技术教程>>正文


如何真正清除终端?

, ,

问题描述

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

有没有办法真正清除终端,所以我不会看到以前的命令结果?

最佳解决方法

是的,你正在寻找的命令是

reset

clearCtrl + 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

command-line,xterm,ubuntu

第四种方法

运行这个命令:

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 "\033cprintf "\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'"

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/93.html,未经允许,请勿转载。