Windows 上的 Ubuntu 上的 Bash:清除所有文本

Windows 上的 Ubuntu 上的 Bash:清除所有文本

最近我从 Mac 换成了 Windows 10 PC,并尝试使用微软的新 Linux 子系统(又名“Windows 上的 Ubuntu 上的 Bash”)。每天使用它时,我最大的烦恼就是清除一大堆文本。也许其他人可以忍受屏幕上堆满文本,但这会让我抓狂。我只能处理一次留下大量文本的命令,这意味着我更喜欢简单地滚动到顶部查看上一个命令的所有输出从哪里开始,然后在我完成后清除它并转到下一个命令。我不喜欢搜索多个命令输出转储来找到最后执行的命令的输出从哪里开始。是的,我知道这并不难,我想我已经习惯使用 Mac OS X 终端应用程序了,在那里我可以输入 Ctrl+K 立即清除所有内容。

在 Windows Bash/Ubuntu 应用程序上,最接近清除文本的是 Ctrl+L,但它只会清除当前可见的文本屏幕,而不会清除整个回滚。单独使用“重置”命令不起作用。我必须滚动到顶部,按 Ctrl+L,然后输入“重置”才能删除所有文本。这已经够烦人的了,但最重要的是,“重置”命令总是使窗口比我的首选项窄,将其设置为 80 列宽。我的首选项(通过单击应用程序图标然后单击“属性”设置)的宽度为 145 列。我甚至尝试进入“默认值”并将其设置为 145,但“重置”仍然将其设置为 80。这一定是在 Ubuntu 子系统中的某个地方配置了某些东西。那个宽度对我来说太窄了。

得票最高的答案这里建议使用 GNOME 终端,因为它允许您映射“重置和清除”快捷方式,但提问者使用的是功能齐全的 Ubuntu,而不是 Windows Ubuntu 子系统,所以我有点怀疑。这对后者有用吗?我可能得看看这是否可行。第二个答案建议创建一个“cls”别名,如下所示:

alias cls="echo -ne '\033c'"

但遗憾的是,这不起作用。我尝试单独运行别名的内容,但也没有产生任何效果,将“echo -ne”替换为“printf”也是如此。

我最后的希望是该页面上的第三个答案:“将缓冲区设置为 0 行”。我猜这是我必须更改的 Ubuntu 子系统中的配置,或者可能是我必须放在主目录中的配置文件(我希望他们能准确解释它们的含义)。无论如何,进入 Windows 应用程序的“属性”并弄乱缓冲区设置都无济于事。

至于正在使用什么终端程序,回显 $TERM 会给我“xterm”。哦,Ubuntu 版本是 14.04。(我听说下一个主要的 Windows 10 更新将使您能够升级到较新的 Ubuntu,但我不想冒险安装 Windows Insider“预览版”。)

答案1

我发现最可靠和可移植的命令

printf '\033c\e[3J'

显然,每次输入都太长太复杂了。解决方案是定义别名,这样就可以使用更简单的名称来运行它。我的建议是选择cls,这是此命令在 Windows 上的 cmd shell 中的名称。
要设置cls为别名,请输入以下行:

alias cls="printf '\033c\e[3J'"

这将在当前 shell 中启用别名。如果您希望每次打开新终端时都能使用它,请将该行添加到.bashrc您的主目录中的文件中。


1.我之前建议使用clear && echo -en "\e[3J",如堆栈溢出,但对于某些用户来说它不起作用,所以我更新了我的答案。

答案2

我不知道 Windows 默认 Ubuntu 终端的问题。根据 DavidPostill 的链接,开发团队似乎已经意识到了这个问题,所以我假设它会在未来的版本中得到修复。在此期间,我只是切换到使用 MinTTY for WSL(https://github.com/mintty/wsltty)。“reset”命令在该终端中运行良好,它完全清除所有文本输出,同时保持窗口尺寸不变。

答案3

exit您可以创建一个批处理文件来在 Bash 中输入时执行此操作

@echo off
powershell while (1) {bash ~; cls}

将文件保存为.bat文件并运行,退出时关闭窗口或按Alt+F4

我也制作了该.bat文件并将其转换为.exe文件,可以在我的 Google Drive 上下载。这里

我已经测试了大约 4 次,运行完美。

如果下载不起作用,请告诉我。

您可以通过编辑以下属性来更改开始菜单中指向此 bat 或 exe 文件的链接:C:\Users\usernamehere\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

相关内容