2012-06-29 46 views
1

我的htdocs文件夾中的.htaccess文件不起作用。訪問文件名時,我嘗試重定向到Google。我想知道我的httpd.conf的設置在哪裏,所以我可以啓用mod_rewrite。我做了下面的UNIX命令來確定我的硬盤上是否存在httpd.conf文件:使用grep查找包含字符串的文件

find * -name "httpd.conf" 

該文件不存在。我在想,也許有另一個文件控制mod_rewrite。我想看看「AllowOverride」是否存在於任何目錄中。我輸入了下面的UNIX命令:

grep -r "AllowOverride" * 

但是很難看,因爲它打印出這麼多的文件夾。伴隨文件夾的消息是「權限被拒絕」或「沒有這樣的文件或目錄」。我如何才能獲得包含AllowOverride的文件的文件路徑?

+1

嘗試抑制stderr的用'2>的/ dev/null' –

+3

ÿ你不正確地使用'find'。不要使用'*'作爲你的路徑;使用'.'或'/'或其他的東西代替。只有一個路徑... – sarnold

回答

5

許多Unix和類似系統提供了一個locate(1)命令,該命令使用數據庫來加速查找單個文件。試試這個:

locate httpd.conf 

注意,當然,Apache配置存儲在各種名稱的文件中;我已經看到了apache.conf,httpd.conf,httpd2.conf,然後有一大堆/etc/apache2/conf.d/--整個目錄結構留給配置Apache。您的分佈可能有所不同

也許apachectl configtest會顯示路徑? (目前沒有安裝在我的機器上,所以我不能輕鬆測試。)

3

嘗試此命令:

find/-name "httpd.conf" 2>1 | grep -v "Permission denied" 

2>1漏斗stderrstdout這樣既可以用管道輸送到grep效用。 grep反過來將打印不具備串苯胺拒絕「權限」,在它(-v則無效/反轉搜索字符串匹配)

如果不重定向到stderrstdoutstderr輸出到控制檯會繞過命令行的其餘部分。

你可以通過追加延長上面的命令行:

| grep -v "No such file or directory" 

如果該字符串就要到了,你想抑制它。這個告訴你all about io redirection。這裏有一個不錯的quick summary

+0

另一個不錯的選擇是丟掉所有的錯誤:'find/-name httpd.conf 2>/dev/null'。 – sarnold

+0

@sarnold ..這是真的,我喜歡他們雖然,以防萬一我想過濾他們(我很懶,所以我會只使用相同的初始命令行)。只要'updatedb'定期運行,'locate'就是一個很好的解決方案。我曾經在一個沒有cron工作的地方工作,而且我沒有sudo來運行它:-( – Levon

+0

Eeep,沒有'updatedb'數據庫,那會很累人...... hooray for'locate' :) – sarnold

0

使用以下命令:

find/-type f -exec grep -n "AllowOverride" {} \; -print 2>/dev/null 

從根掃描包含有「AllowOverride」字符串的文件,如果你想運行在一個特定的目錄搜索,改用以下:

find /path/to/directory -type f -exec grep -n "AllowOverride" {} \; -print 2>/dev/null 

輸出應該只打印包含指定字符串的文件與所述匹配行的行號沿

相關問題