2012-07-26 56 views
3

我正在嘗試編寫一個小小的shell腳本,以通過啓用apache和php上新安裝的Mountain Lion所需的步驟。我堅持的步驟是進入/etc/apache2/httpd.conf並取消註釋此行:#LoadModule php5_module libexec/apache2/libphp5.so使用sed取消註釋httpd.conf中的一行

從目前爲止,我認爲sed是這樣做的方式,但我無法獲得正確的語法。我試過這個:

cd /etc/apache2 
sudo sed -i '/s/#LoadModule php5_module libexec\/apache2\/libphp5.so/LoadModule php5_module libexec\/apache2\/libphp5.so' httpd.conf 

我認爲會用未註釋行代替註釋行(轉義斜線)。但是,當我運行的是,我剛收到以下消息回來了,沒有結果的文件中:

sed: 1: "httpd.conf": extra characters at the end of h command

我出我的深度在這裏與這種類型的腳本,我怎麼完成這個任務?

回答

1

刪除第一個/

sed -i 's/...' 
+0

另外也缺少'/'中的's'命令的結束。 – rush 2012-07-26 07:47:57

5

您可以使用逗號。

sed -i 's,#LoadModule php5_module libexec/apache2/libphp5.so,LoadModule php5_module libexec/apache2/libphp5.so,g' 

sed -i 's,#\(LoadModule php5_module libexec/apache2/libphp5.so\),\1,g' foo.txt 
+2

+1使用反向引用 – chepner 2012-07-26 13:08:38

0

正確的語法是

's/#LoadModule php5_module libexec\/apache2\/libphp5.so/LoadModule php5_module libexec\/apache2\/libphp5.so/' 

斜線/可以是由另一個字符改變( - 例如),以避免逃逸斜線 點。必須在圖案(左邊部分)被轉義否則表示任何字符

's-#LoadModule php5_module libexec/apache2/libphp5\.so-LoadModule php5_module libexec/apache2/libphp5.so-' 
+0

我仍然得到與這兩個命令相同的錯誤... :( – zakkain 2012-08-04 05:29:36

0

還有另一種方式:

sudo sed -i '/#LoadModule php5_module libexec\/apache2\/libphp5.so/s/#//' httpd.conf 
+0

這給了我和以前一樣的錯誤...我一定在做別的錯誤 – zakkain 2012-08-04 05:30:07

相關問題