Cygwin 似乎不以 grep 命令结尾

Cygwin 似乎不以 grep 命令结尾

我以前在 Windows XP 上的 cygwin 上成功使用 grep。突然间,现在当我运行 grep 时,它似乎永远不会结束。

miname@mycomputer /cygdrive/c/emacs
$ grep "lkjlkjlkjlkjlkjlkjlkjlkjlkjlkjlkj"

我搜索了谷歌,但没有找到与此相关的内容。我重启了电脑。我还检查了日志,但似乎只有安装日志(在 var/log 中)。我似乎记得我在安装 cygwin 时遇到了困难(我有一台相当封闭的工作电脑),所以宁愿不重新安装(如果确实可以解决问题的话)。

我该怎么做才能修复或调查我的问题?

编辑:读完答案后,我意识到我以为成功的事情其实是grep "asdfasdf" .- 注意那个点!我没有做同样的事情。

答案1

没有实际问题。这里发生的事情是,由于您没有指定要grep搜索的任何文件,因此它正在监听 STDIN 以查找要搜索的文本。这就是诸如 之类的管道的tail -f /var/log/messages | grep "error"工作方式:该tail命令将其输出发送到grep的标准输入,并grep仅打印与给定搜索字符串(在此示例中为“error”)匹配的行。

如果您grep在没有文件的情况下调用它并且没有向它传输任何内容,它将从您的终端继承标准输入流,并监听您的键盘。(试试看!输入一些内容并按回车键,如果它与您为 grep 提供的搜索字符串匹配,您将看到它被回显。)要终止 grep 进程,请按 Control-C。要从它那里获得有用的输出,请将一个或多个文件作为命令行参数传递给它,例如,跟在搜索字符串后面grep "something" file.c file.h,或者像tail上面的例子一样将一些内容传输到它。

这就是 Unix grep 的工作方式,也是它一直以来的工作方式。如果您以前以这种方式调用 grep,而它的行为有所不同,那么您调用的不是 Cygwin 的 grep,而是其他某个实用程序,它恰好具有相同的名称,并且位于 Cygwin 之前的目录/bin$PATH

相关内容