如何在Cygwin中使用'clear'命令?

201

我安装了Cygwin,并选择了相对较少的软件包。

在终端中,我尝试使用“clear”命令来清除终端屏幕,但是出现了以下错误信息:

bash: clear: command not found

我该如何让这个起作用?


103
你也可以输入控制键和L键。 - Keith Thompson
1
是的,但(对我来说)在set -o vi模式下不起作用;但在set -o emacs模式下可以。谢谢。 - MarnixKlooster ReinstateMonica
1
set -o vi 模式下,您可以键入 escape,然后是 control-L(然后按 i 返回插入模式)。 (个人而言,我喜欢将 vi 作为编辑器,但不喜欢将其作为交互式 shell 模式。) - Keith Thompson
4
按下Ctrl+L键清除。 - KOTIOS
2
请注意,“ncurses”包(如所接受的答案中所述)还包括其他有用的终端相关命令,例如“tput”,因此根据您的需求安装可能会很值得。 - Donald Burr
显示剩余2条评论
10个回答

243

安装Cygwin包ncurses;它在Utils类别中。


2
此软件包似乎不在当前的Cygwin 64位版本中。 - Andrew Prock
6
@AndrewProck 现在好像已经有了! - Rohaq
谢谢!如果您已经安装了Cygwin,则可以按照此处的“安装ncurses”部分安装ncurses:http://java.ociweb.com/mark/programming/tmuxInCygwin.html - jbisa
1
如果您找不到ncourses,请在安装开始时更改镜像,或使用搜索框。 - albertoiNET
我的SpyHunter将"clear.exe"视为恶意软件,因此在我尝试运行它时会阻止它。 - Rob Stoecklein

127

这样就可以了:

alias clear='printf "\033c"'

2
很好的答案。在旧版本的Cygwin中,cmd /c cls曾经像https://dev59.com/8WUp5IYBdhLWcg3wAjtF中描述的那样工作。但是这个解决方案已经停止工作了,而这个`printf`在本文撰写时仍然有效。 - ctrueden
1
非常好 - 截至2014年9月仍然有效。为了更加清晰,您可以将此添加到您的./bashrc文件中(只需复制并粘贴该行),您会在/home/[用户名]下找到它,并使其永久化。 - Sam Redway
这对于Gow的bash同样有效,但msysgit在bin目录中有自己清晰的程序。 - icc97
1
这是清除回滚以及当前屏幕的最佳答案。Ncurses对我来说无法清除回滚。 - blockloop
很棒的答案...即使在生产服务器上,您也可以使用它,而不允许安装软件包(我知道...在生产Windows服务器上使用Cygwin..这不是我的选择xd)。您只需要将其添加到您的~/.bashrc文件中并source它,就完成了...很好地指出了这一点。 - LukeSavefrogs

37

只需使用此快捷键:Alt+F8Ctrl-L即可跳过页面。


4
这不是用户要求的,有时清除屏幕确实非常有用,可以快速确保输出来自您认为的位置。 - DrCord
1
但这并不是对问题的回答,如果你在每个Stack Overflow帖子上放置每个略微相关的有用信息,那将会是一个庞大的工程。 - DrCord
4
我通过Google搜索“cygwin clear screen”找到了这里,这个答案对我来说是正确的。您可以对回答、范围、限制等进行任意严格的要求,但就我而言,这为我的问题提供了解决方法,并因其真正“有帮助”而获得了赞同。 - Bing
1
于是战斗继续进行:纯粹主义者和反纯粹主义者从哲学分歧的两个对立面进行炮击。如果一名战士被杀,他就会被扔进深渊,当他坠落时,双方都会捂住耳朵以避免听到悖论的尖叫声。 - Stabledog

15

使用cygcheck命令来检查它属于哪个软件包(在命令字符串中添加.exe,在这个例子中是:clear.exe

> cygcheck -p 'clear.exe'
Found 4 matches for clear.exe
ncurses-debuginfo-5.9-20150307-1 - ncurses-debuginfo: Debug info for ncurses (installed binaries and support files)
ncurses-debuginfo-5.9-20150404-1 - ncurses-debuginfo: Debug info for ncurses (installed binaries and support files)
ncurses-5.9-20150307-1 - ncurses: Terminal display utilities (installed binaries and support files)
ncurses-5.9-20150404-1 - ncurses: Terminal display utilities (installed binaries and support files)

你需要使用cygwin安装ncurses软件包。


13

有了clear.exe程序,对于bash脚本文件非常方便:

Windows Cygwin关于clear.exe程序的详细命令。

  1. http://cygwin.com/下载Cygwin setupx86.exe 或者其他名称。

  2. 运行它并从互联网下载。 *如果您有代理连接,则可能需要使用Internet Explorer设置或设置自定义代理。

  3. 选择所有默认设置,并完成安装。

  4. 再次运行安装程序并从互联网下载,但这次当它来到您要定制安装的文件树时,您将进入Utils

  5. 展开Utils并进入ncurses文件夹。在那里,您将点击ncurses utils左侧的skip项目(其中有几个)。

  6. 更改skip为您想要安装的任何版本的ncurses后,继续安装并完成。

  7. 再次运行安装程序,这次您将扩展Lib,即库。

  8. 找到terminfo库安装程序,再次将skip更改为最新版本,然后继续并完成安装。

注意 您可能需要退出Windows并重新登录,或者重启计算机,以使新程序生效。这是由于Cygwin的后台会话可能性。

注意 您还必须进行三个单独的安装。


@Chris:我只是为了清晰起见而问这个问题。为什么在这里需要terminfo数据库库?clear命令对我来说很好用。我阅读了关于terminfo的资料(提供链接:http://tldp.org/HOWTO/Text-Terminal-HOWTO-16.html),但想知道它在这里是否有特定的作用? - Starney

12

我在我的系统上尝试过:它能够正常工作:

Just use: cntrl+l

希望这可以帮到你!


11

我右键单击 > 重置... (Alt + F8) ,在Cygwin-x86-2.830上解决了问题。


1
+1 Ctrl+L和ncurses的clear命令会保留滚动缓存,而这个则会清除它。 - Zantier

7

搜索 "/clear.exe$" => 安装 "ncurses"

TLDR: 包搜索使用正则表达式。因此,搜索正则表达式 "/clear.exe$" 将给出最佳匹配。这导致了 ncurses 包。


解决此类问题的一般方法:
Cygwin包搜索页面上使用完整的可执行文件名进行搜索。

现在可以通过几种方式进行包搜索:

这三个匹配项都来自多个版本的 ncurses 包。因此,要获取 clear.exe,您需要安装 ncurses

< p > < em >(专业提示:右键单击搜索栏并创建定制搜索引擎。我已将其设置为Firefox和Chrome中的“cygwin包”快捷方式< code> cp 。) (提示:右键单击搜索栏,创建一个自定义搜索引擎。我已经将它设置为Firefox和Chrome中的“Cygwin软件包”的快捷方式< code>cp。)

7

打开Windows资源管理器然后导航到:

[Cygwin安装目录]\home\[用户]\

例如:C:\cygwin\home\wreckseal

然后用Notepad++打开文件.bashrc

将光标移动到最后一行的末尾,按下Enter键,然后添加以下文本。

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

或者以下文本:

alias cls='printf "\033c"'

重启Cygwin,输入cls。 完成!

请注意,在发送cls命令后,没有滚动条。 我更喜欢printf版本而不是echo版本。 你自己试试吧!


2
我刚刚发现这个项目,目前来看,我认为它很棒。
安装完成后,你可以运行以下命令:https://github.com/transcode-open/apt-cyg
apt-cyg install ncurses

我个人更喜欢使用这个工具来安装库,而不是使用Cygwin工具,因为Cygwin版本都有“.exe”附加在它们的后面,而且当从SO(例如)复制和粘贴Linux命令时可能会很麻烦。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接