我的Linux grep命令有问题,它不起作用!!!
我在Ubuntu系统上尝试以下测试:
我创建了以下文件夹:/home/andrea/Scrivania/prova
在这个文件夹里面我创建了一个名为prova.txt的txt文件,在这个文件中我写了字符串test
并保存了它
在shell中,我首先访问文件夹/home/andrea/Scrivania/prova
,因此我按以下方式启动了grep命令:
~/Scrivania/prova$ grep test
问题是光标继续无休止地闪烁,找不到任何东西!为什么?有什么问题?
答案 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 test
会grep
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)
名为
-
的文件代表标准输入。如果没有指定输入, 如果给定命令行,grep
将搜索工作目录.
指定递归的选项;否则,grep搜索标准输入。
因此,对于OP的命令,没有任何其他规范,grep
会尝试搜索标准输入,而实际上并没有在那里提供。
如上所述,一个简单的方法是grep -r [pattern]
,用-r
指定递归并在当前目录和子目录中搜索。
另请注意,通配符 *
仅包含文件,不是目录。如果使用,则可能会显示提示:
grep:[directory_name]:是一个目录