2012-11-21 60 views
3

我有一些Linux grep命令的問題,它不工作!如果沒有指定文件,爲什麼不grep工作?

我想我的Ubuntu系統上如下測試:

  1. 我已創建以下文件夾:/home/andrea/Scrivania/prova

  2. 這個文件夾我創建了一個名爲prova.txt txt文件和內內這個文件我已經寫了字符串test並且我保存了它

  3. 在shell中我首先訪問文件夾/home/andrea/Scrivania/prova,所以我啓動了grep co mmand以下列方式:

    ~/Scrivania/prova$ grep test 
    

的問題是,光標繼續無休止地閃爍,並不能找到什麼!爲什麼?問題是什麼?

回答

9

你沒有提供文件grep命令掃描

grep "test" *

或遞歸

grep -r "test" *

4

因爲如果沒有給出文件,grep會搜索標準輸入。嘗試這個。

grep test * 
0

你需要管的東西到grep - 你因爲它實際上什麼都不做,所以不能在沒有任何其他參數的情況下調用grep測試。嘗試grep test *

grep的另一個用途是在管的命令

例如這是我的主目錄:

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 
[email protected] 12 oliver staff 408 13 Nov 20:53 Dropbox 
[email protected] 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命令

+0

但她能做到這一點,她做到了。當然,它正在做一些事情。它對標準輸入進行了精簡,對於手動輸入一些模式以測試它們是否匹配,實際上可能非常有用。在空行上按'^ D'(Ctrl-d)結束標準輸入流和grep。 –

0

從grep的手冊頁:

grep的搜索名爲輸入文件(或者,如果沒有文件被 命名 ,或文件名的標準輸入 - 賦予),用於容納一個匹配到給定的 圖案線條。

如果您沒有提供文件名以供使用,它會嘗試從標準輸入讀取。

嘗試grep test *

1

您沒有運行你要找的命令。

grep test *將在當前目錄中的所有文件中查找test

grep test prova.txt將尋找test特別是在prova.txt

grep testgreptest字符串中stdin,並不會返回,直到EOF

0

GNU Grep 3.0

的文件命名-代表標準輸入。如果沒有指定輸入, grep搜索工作目錄.(如果給定了命令行 選項指定遞歸;否則,grep搜索標準輸入。

所以對於OP的命令,沒有任何額外的規範,grep試圖在標準輸入,這是不實際提供有搜索。

一種簡單的方法是grep -r [pattern],按照上述內容,指定遞歸-r和在當前目錄和子目錄搜索。

還要注意,通配符*僅包括文件,不是目錄。如果使用,可能會針對提示提示:

的grep:[目錄名]:是一個目錄

相關問題