如果没有指定文件,为什么grep不起作用?

时间:2012-11-21 23:31:50

标签: linux bash shell ubuntu grep

我的Linux grep命令有问题,它不起作用!!!

我在Ubuntu系统上尝试以下测试:

  1. 我创建了以下文件夹:/home/andrea/Scrivania/prova

  2. 在这个文件夹里面我创建了一个名为prova.txt的txt文件,在这个文件中我写了字符串test并保存了它

  3. 在shell中,我首先访问文件夹/home/andrea/Scrivania/prova,因此我按以下方式启动了grep命令:

    ~/Scrivania/prova$ grep test
    
  4. 问题是光标继续无休止地闪烁,找不到任何东西!为什么?有什么问题?

6 个答案:

答案 0 :(得分:9)

您没有为要扫描的grep命令提供文件

grep "test" *

或递归

grep -r "test" *

答案 1 :(得分:4)

因为如果没有给出文件,grep会搜索标准输入。试试这个。

grep test *

答案 2 :(得分:1)

您没有运行您正在寻找的命令。

grep test *会在当前目录的所有文件中查找test

grep test prova.txt会在test

中专门查找prova.txt

grep testgrep test stdin中的EOF字符串,直到{{1}}才会返回。)

答案 3 :(得分:0)

你需要管道输入grep - 你不能在没有任何其他参数的情况下调用grep test,因为它实际上什么都不做。试试grep test *

grep的另一个用途是在命令中输入管道

e.g。这是我的主目录:

drwx------+  3 oliver  staff    102 12 Nov 21:57 Desktop
drwx------+ 10 oliver  staff    340 17 Nov 18:34 Documents
drwx------+ 17 oliver  staff    578 20 Nov 18:57 Downloads
drwx------@ 12 oliver  staff    408 13 Nov 20:53 Dropbox
drwx------@ 52 oliver  staff   1768 11 Nov 12:05 Library
drwx------+  3 oliver  staff    102 12 Nov 21:57 Movies
drwx------+  5 oliver  staff    170 17 Nov 10:40 Music
drwx------+  3 oliver  staff    102 20 Nov 19:17 Pictures
drwxr-xr-x+  4 oliver  staff    136 12 Nov 21:57 Public

如果我跑

l | grep Do

我得到了结果

drwx------+ 10 oliver  staff    340 17 Nov 18:34 Documents
drwx------+ 17 oliver  staff    578 20 Nov 18:57 Downloads

记得管道 grep命令

答案 4 :(得分:0)

从grep手册页:

  

Grep搜索命名输入FILE(如果没有文件则搜索标准输入)   是          命名,或文件名 - 给出)包含匹配的行          给予PATTERN。

如果您没有提供要使用的文件名,它将尝试从标准输入读取。

尝试grep test *

答案 5 :(得分:0)

根据GNU Grep 3.0

  

名为-的文件代表标准输入。如果没有指定输入,   如果给定命令行,grep将搜索工作目录.   指定递归的选项;否则,grep搜索标准输入。

因此,对于OP的命令,没有任何其他规范,grep会尝试搜索标准输入,而实际上并没有在那里提供。

如上所述,一个简单的方法是grep -r [pattern],用-r指定递归并在当前目录和子目录中搜索。

另请注意,通配符 * 仅包含文件,不是目录。如果使用,则可能会显示提示:

  

grep:[directory_name]:是一个目录