如何真正清除终端?

Sta*_*ann 469 command-line xterm

我可以发出clear命令或按Ctrl+L清除当前Ubuntu的终端,但是这只是转移之前的输出向上,如果你使用鼠标滚轮或PgUPPgDown钥匙很难区分在以前命令结束的输出,输出电流命令的开始。

有没有办法真正清除终端,这样我就看不到以前的命令结果了?

Ste*_*zzo 530

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

reset
Run Code Online (Sandbox Code Playgroud)

clear, 或Ctrl+ 相比Lreset实际上将完全重新初始化终端,而不仅仅是清除屏幕。但是,它不会重新实例化 shell (bash)。这意味着 bash 的状态和以前一样,就好像您只是在清除屏幕一样。

正如@Ponkadoodle 在评论中提到的,这个命令应该更快地同样的事情

tput reset
Run Code Online (Sandbox Code Playgroud)

从其他答案:

  • 您可以将一组键盘快捷键,以reset终端,如通过解释towolf

  • 如果您正在运行Kubuntu,并且您的终端是 Konsole,您需要转到Edit ?清除历史记录,因为reset在那里的工作方式不同,正如 UncleZeiv 指出的那样

  • @ulidtko:当您连续运行具有大量输出的程序会话时,这很重要。如果你向后滚动,很容易混淆哪个执行打印了一些东西。我非常清楚在这些情况下可以使用更复杂的解决方案,但尽管如此,这种情况在快速和肮脏的调试会话中经常出现。 (20认同)
  • 还有`tput reset`,它显然做了同样的事情,但会立即完成(而`reset` 可能需要大约 2 秒才能重新出现提示)。 (12认同)
  • 对于大多数用户来说可能无关紧要,但是“重置”的行为取决于终端。 (10认同)
  • 就我个人而言,我不介意当我点击 `^L` 时沿着滚动条“向上”留下一些东西。我没有看到它(这就是我想要的!),我没有感觉到,如果我突然*需要*恢复那里的东西——没问题。相比之下,`reset` 是更难的工具——我会在终端出现问题时使用它——比如,当奇怪的转义序列意外地完全破坏了显示时。 (2认同)

小智 148

我一直在寻找这个,我发现一些天才发布了这个:

clear && printf '\e[3J'
Run Code Online (Sandbox Code Playgroud)

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

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

  • 谢谢,超级有用!`printf '\e[3J'` 是什么意思?它如何清理缓冲区? (9认同)
  • 小心别名`reset` - 它不仅仅是清除终端。例如,如果您不小心打印了一个带有随机垃圾的二进制文件而损坏了终端(例如,禁用了输入字符的回显),`reset` 通常可以解决这个问题。当然,只要您知道如何`\override` 别名阴影命令,别名就可以了。 (4认同)
  • 这是通过 Winders 访问某些 SSH 时清除 Putty 回滚的唯一答案。 (4认同)
  • 嗯,适用于 xterm、Konsole 和 Linux VT,但不适用于 gnome-terminal... (3认同)
  • 很棒的发现!对于那些想要在 mac 上进行 Bash 式重置的人:`nano ~/.bashrc` 并添加 `alias reset="clear && printf '\e[3J'"` (3认同)
  • 也可以写成:`printf '\033c\e[3J'` (2认同)
  • @Filip Spiridonov,`\e[3J` 是“擦除保存的行,xterm”的转义序列。(即回滚)。参考:https://invisible-island.net/xterm/ctlseqs/ctlseqs.html(搜索`CSI Ps J`) (2认同)

小智 52

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

重置和清除快捷方式

  • “重置”对我没有任何作用,“重置并清除”清除所有内容但不重新显示提示。这些菜单条目的行为都不像来自终端的“重置”命令。 (5认同)

Aut*_*act 23

stackoverflow交叉发布我的答案。

使用以下命令清除屏幕,而不仅仅是添加新行...

printf "\033c"
Run Code Online (Sandbox Code Playgroud)

是的,这是 bash 提示符下的“printf”。

你可能想定义一个别名...

alias cls='printf "\033c"'
Run Code Online (Sandbox Code Playgroud)

解释

printf "\033c"
Run Code Online (Sandbox Code Playgroud)

所以这变成<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
Run Code Online (Sandbox Code Playgroud)

凯德

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

clear && echo -en "\e[3J"
Run Code Online (Sandbox Code Playgroud)

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

alias cls='clear && echo -en "\e[3J"'
Run Code Online (Sandbox Code Playgroud)

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


dv3*_*0ea 18

运行这个命令:

reset
Run Code Online (Sandbox Code Playgroud)

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

  • 使用 putty 时,运行 `reset` 后,我仍然可以向上滚动并查看以前的内容。这是 PuTTY 的问题而不是 `reset` 的问题吗? (7认同)
  • @Bira 不,`reset` 不会清除 macOS 10.14 Mojave 上的回滚。你可以试试`seq 100; 重置`以查看回滚仍然存在。在 macOS 终端上,`Cmd+K` 可以清屏和回滚。 (2认同)

dyl*_*nmc 8

我最喜欢的是printf "\ec"。这也可以是printf "\033c"printf "\x1bc"。这是一个ansi转义序列,它奇迹般地清除了终端输出的屏幕和缓冲区(对于我使用过的大多数标准终端来说似乎 - 我知道它可以在类似 Ubuntu 的 gnome-terminal、terminator、xterm 等中使用Linux)

我知道这适用于 Linux Mint 和 Ubuntu 14.04,所以我不知道为什么人们要附加和准备诸如clear && echo -ne "\033c. printf "\ec"一直为我工作。

此外,在我的.bashrc我有这样的绑定:

bind -x '"\C-t": printf "\ec"';
Run Code Online (Sandbox Code Playgroud)

现在我一直按ctrlt


Unc*_*eiv 5

好吧,这真的取决于,Konsole例如,如果您正在使用,甚至reset不会阻止您滚动到第一行。在这种情况下,您必须使用您正在使用的特定终端的某些功能。对于Konsole,它是Edit > Clear History


小智 5

我发现以下内容在 Kubuntu 上非常成功:

alias clc="echo -en '\033c\033[3J'"
Run Code Online (Sandbox Code Playgroud)

您可以cls使用 Matlab 版本clc或您自己的版本来保持 Windows 传统。祝你好运!


小智 5

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

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


Shi*_*hah 5

以下是在 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 "\033c"     # same as tput reset but hardcoded escape seq
printf "\033c"      # same as tput reset but hardcoded escape seq
setterm -reset      # same as tput reset, setterm has friendlier commands
Run Code Online (Sandbox Code Playgroud)