腻子:从命令行清除回滚


27

通过PuTTY连接到服务器时,可以使用clear命令清除可见屏幕。

但是,我仍然可以在PuTTY的GUI中向后滚动以查看旧内容。我知道PuTTY的“ 清除回滚”功能,但这需要单击鼠标。

我想执行与“ Clear Scrollback”完全相同的操作,但是要从命令行执行。

可能吗?

我阅读了这个网站,这似乎表明了这一点。

但是,我的实验失败了。例如:

printf '\033[3J'

什么都不做,对我来说。

我可能不理解CSI 3 J第二个链接中的含义,但是...


您正在使用什么版本的PuTTY?该页面指示该功能在PuTTY 0.59及更高版本中有效。我有PuTTY 0.60,对我有用。请注意,它仅清除回滚缓冲区,而不清除屏幕。(如果我有可以实际滚动的滚动条,然后使用此顺序,我会注意到滚动条被禁用,因为突然没有可用滚动的内容了。但是当前显示的屏幕仍然存在。)
Bavi_H 2013年

@Bavi_H:啊,谢谢你-我没有意识到它不会影响当前显示的文本。我也看到了。我想要的完整解决方案是clear && printf '\033[3J'。如果您回答,我会接受。
jwd

Answers:


32

CSI 3 J清除回滚缓冲区的序列已添加到PuTTY 0.59中。(在此功能的愿望请求页面上,请参见“固定”行,或转到“ 更改腻子” 页面并搜索CSI 3 J。)

如jwd所述,您可以printf '\033[3J'在命令行上输入以将此序列发送到PuTTY。请注意,这只会清除回滚缓冲区,而不会清除屏幕。如果您有一个滚动条,则可以实际滚动,然后按此顺序进行操作,您会看到滚动条被禁用,因为突然之间没有可用的滚动条。但是当前显示的屏幕仍然保留。

如jwd所述,您可以使用以下命令清除屏幕和回滚缓冲区 clear && printf '\033[3J'


对于那些希望了解一些控制代码的人:xfree86.org/4.8.0/ctlseqs.html (:此文件位于CSI P s J
jwd

11

如果你习惯了,因为我,使用Ctrl+LReset terminalPuTTY中的系统菜单选项,那么你可能会发现它有助于实现Configuration -> Window -> Behavior -> "System menu appears on ALT-Space"

然后,当您点击时Alt+Space,的选项"Clear scrollback"L(小写;无Shift)触发。因此,在您的外壳程序历史记录reset + clearCtrl+LAlt+Space L无论有没有令人讨厌的鼠标移动或混乱都成为迷人的助记符组合。


的作品,很容易记住:)
Wyrmwood

不错,虽然仅供参考:您还可以通过在命令前加上空格来防止混乱的shell历史记录。
jwd

6

创建一个脚本文件并将其放置在包含路径的文件夹中:

$cat > /usr/local/bin/cls
#!/bin/bash
clear
printf '\033[3J'

按CTRL + d保存并退出

更改文件权限:

chmod a+x /usr/local/bin/cls

现在您可以使用cmd cls :-)


1

对我来说,解决方案是传输'\ 033 \ 143'字符:

printf(“ \ 033 \ 143”);

这将清除终端屏幕,然后将光标放回到左上角。


1
(1)问题要求使用命令行(例如,shell)命令。这不是shell命令,而是一行C代码;因此,这不是该问题的答案。(2)如果您说出\143角色是什么,以及角色与这个问题的关系,最好是带有引文,则这篇文章会有所帮助。
斯科特,

1
对于那些想知道的人,这对应于“完全重置”转义码(ESC c)。ASCII的c值为99八进制143。除了清除回滚,这还可以做很多其他事情,仅供参考。
jwd

1

腻子中有一个选项,您可以在其中取消选中默认的回滚行为。只需取消选中“将擦除的文本推入回滚”选项即可。

油灰设置图像

此后,当您发出clear命令时,它将擦除屏幕,并且不会将以前的屏幕内容回滚。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.