5

我正在尝试编写一个小 shell 脚本来完成在新安装的 Mountain Lion 上启用 apache 和 php 所需的步骤。我坚持的步骤是进入/etc/apache2/httpd.conf并取消注释这一行:#LoadModule php5_module libexec/apache2/libphp5.so

从到目前为止的谷歌搜索来看,我认为 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

我对这种类型的脚本不了解,我该如何完成这项任务?

4

4 回答 4

6

您可以使用逗号。

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
于 2012-07-26T07:20:34.297 回答
1

还有另一种方式:

sudo sed -i '/#LoadModule php5_module libexec\/apache2\/libphp5.so/s/#//' httpd.conf
于 2012-07-26T08:00:02.903 回答
1

删除第一个/

sed -i 's/...'
于 2012-07-26T07:18:52.110 回答
0

正确的语法是

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

斜杠 / 可以由另一个字符(例如 - )更改以避免转义斜杠 dot 。必须在模式(左侧)中转义,否则表示任何字符

's-#LoadModule php5_module libexec/apache2/libphp5\.so-LoadModule php5_module libexec/apache2/libphp5.so-'
于 2012-07-26T07:23:51.097 回答