繁体   English   中英

Ubuntu 14.04中的Grep

[英]Grep in Ubuntu 14.04

我最近将Ubuntu VM更新到14.04,在此之前我可以运行grep命令

grep -nr "piece of text"

或其他任何grep命令,它将在2-10秒内在我正在处理的目录中完成。 现在由于某种原因(不知道这是否是由更新引起的),在我正在使用的同一个目录中运行任何grep命令似乎都挂在那里(idk如果完成了,因为我不想等待一分钟或以便进行搜索)而不是显示我的结果。 对正在发生的事情或我能做些什么并尝试解决它有任何想法吗?

您没有指定要grep的文件,因此它正在尝试读取STDIN。 我想你想要

grep -nr "piece of text" *

请注意,星号会被globe到当前路径中的所有文件。

您正在使用哪个grep -r选项默认为“。” gnu情况下的目录

which grep :
/bin/grep --version
/bin/grep (GNU grep) 2.18)
...
this is gnu grep :

echo "truc" >/tmp/truc

cd /tmp; grep -nr "truc";

使用gnu grep->递归搜索。 当前目录(在/tmp )的目录,并显示包含“ truc”的目录

如果/bin/grep --version是busybox:

BusyBox v1.22.1 (Debian 1:1.22.0-8) multi-call binary.

用法:

grep [-HhnlLoqvsriwFEz] [-m N] [-A/B/C N] PATTERN/-e PATTERN.../-f FILE [FILE]...

使用busybox: cd /tmp; busybox grep -nr "truc"; cd /tmp; busybox grep -nr "truc";

无限期地等待您在STDIN上键入文件的内容(以Ctrl + C停止)。

它将STDIN读取为文件(甚至不关心-n表示目录递归)。

正如其他人回答的那样,正如POSIX grepGNU grep文档所讲的那样,您需要为标准grep命令指定一些文件。 (但GNU grep默认为当前目录.如果-r是一个没有目录名定;但如果-r完全不给, grep默认阅读-标准输入 )。

顺便说一句,我还建议使用ack实用程序,在Ubuntu或Debian上打包为ack-grep软件包 它不需要任何文件(默认是当前目录下的源代码文件),并且避免了无用的非源文件(版本控制或目标文件...):

 ack "piece of text"

另外,在emacs下,您可以使用Mx grep

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM