Grep in Ubuntu 14.04

时间:2014-08-13 18:34:02

标签: linux ubuntu grep busybox

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

grep -nr "piece of text"

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

3 个答案:

答案 0 :(得分:3)

您没有指定要grep的文件,所以它试图读取STDIN。我想你想要

grep -nr "piece of text" *

请注意,当前路径中的所有文件的星号为globbed

答案 1 :(得分:2)

你正在使用哪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";

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

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

答案 2 :(得分:1)

正如其他人回答的那样,正如POSIX grepGNU grep文档所述,您需要为标准grep命令指定一些文件。 (但如果grep没有目录名,则 GNU .默认为当前目录-r;但如果没有给出-rgrep默认为-,即 stdin )。

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

 ack "piece of text"

此外,在emacs下,您可以使用M-x grep