2013-03-05 97 views
4

下面是測試:ACK沒有找到符號鏈接

$ ln -nfs ~/.ssh ssh # Create a symlink in current dir. 
$ ack -g ssh   # => nothing found 
$ ack -a -g ssh  # => same here 
$ find . -name ssh # => found: ./ssh 

我做錯了嗎? )

回答

5

有兩件事情與你的期望相反。

首先,如果您不使用--follow開關,則ack將忽略符號鏈接。

二,更重要的是,ack -g沒有找到目錄。它只能找到文件。 ack是基於文件的實用程序。它不是像find這樣的通用實用程序。

+0

我的期望是基於事實,即符號鏈接是一種特殊的文件,如果我不使用「--follow」鍵爲什麼我找不到它? – chestozo 2013-05-05 12:38:52

+0

因爲你的符號鏈接代表一個目錄,所以ack並不認爲它是一個文件。基本上,'-f'和'-g'是「ack在裏面搜索的文件」。 – 2013-05-05 14:40:31