快速批量替换文件内容(perl版)

背景:
       经过漫长的源代码下载及编译,终于把apache2.4成功地安装在了Freebsd之上。

# 编辑 httpd.conf
vim /usr/local/etc/apache24/httpd.conf
# 启动 apache
service apache24 start;
# 访问自建网站
http://192.168.137.103
# 显示 “It works”,成功了,基本配置没有问题。

# 不过隐借用 www.freebsd.org 下载的 html 版的 handbook 包试试。
cd /usr/local/www/apache24/data;
tar -xvf book-html.tar -c ./;

# 访问主页
http://192.168.137.103
一个熟悉的页面出现,只是点几个页面发现图片是 X ,不科学!难道apache支持图片还要加配置选项?
# 搜索一番加入以下配置
AddType image/png .png
service apache24 reload;                  -- 依然如此。

# 查看网友源代码发现:
/local0/docbuild/build/doc/en_US.ISO8859-1/books/handbook/../../../share/images/books/handbook/bsdinstall/bsdinstall-newboot-loader-menu.png" alt="FreeBSD Boot Loader Menu" />
这路径显然不能正常显示路径。接下来的工作就是把所有 html 文件中的相关内容改成跟我本地路径吻合的内容。

批量修改:
    这种工作使用 vim 问题不大:
:%s/\/local0\/docbuild\/build\/doc\/en_US.ISO8859-1\/books\/handbook\/\.\.\/\.\.\/\.\.\/share\/images\/books\/handbook/\./g
    使用以上这行古怪的东西就可以达到目的了。可问题是如果文件不只一个,那一个个改太没有黑客精神了。
    这回我们不用 sed(vi 其实也是可以的), 这回改用 perl:
cd /usr/local/www/apache24/data;
find ./ -name "*.htlm" -type f -print | xargs perl -pi -e \
    's|/local0/docbuild/build/doc/en_US.ISO8859-1/books/handbook/../../../share/images/books/handbook|.|g';
    这里与上面的 VI 略用不同使用的是 '|' 而不是 '/', 其实是一样的,只是此时使用 '|' 避免了与路径中的 '/' 冲突,从而避免了使用 \/ 来转义。
service apache24 reload
    为何是 reload?restart 也可以只是 restart 是杀死进程再启动进程,reload 只是优雅地重新加载配置文件。
    这是个理念问题,好比配置 IP , 可能有人告诉你,在 /etc/rc.config 中加入
            ifconfig_em1= "inet 192.168.137.103 netmask 255.255.255.0", 然后重启 ip 就配置上了。
    而我会这么做:
        1. 改配置。
        2. 不重启,而是执行 ifconfig em1 192.168.137.103 netmask 255.255.255.0 up。一样的效果何必重启,它是服务器不是pc !
       3. 如果只是单纯想确定自己的配置有没有问题,执行 service netif start em1 即可。

        4. 当然,如果你愿意等待这个漫长的开机时间,似乎也没有什么大不了。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25521690/viewspace-2123827/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25521690/viewspace-2123827/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值