Linux Shell 如何获取文件内容、替换字符串、写入文件

Linux 的超高生产力,Shell 有一大半功劳,因此如果想真正地把 Linux 利用起来,学习 Shell 是必经之路。

为了编写脚本实现 WordPress Google Captcha 插件的一键更新和替换地址,我需要获取指定文件的内容,替换字符串并覆盖原文(具体实现可以阅读:WP-CLI + Linux Shell 一键更新、修改 Google Captcha 插件)。

获取文件内容

cat 命令可以用来读取文件,也可以把获取到的内容赋值给变量:

temp=$(cat ./google-captcha.php)

替换字符串

{ / / } 命令替换单个或使用 { // / } 所有匹配的字符串。temp 是包含字符串的变量,baidu 是被替换字符串,google 是替换后的字符串。将替换后的内容赋值给变量,或者直接输出。

# 替换一个字符串
single=${temp/baidu/google}

# 替换所有,注意temp后的/数量
all=${temp//baidu/google}

写入文件

echo 命令可以用来在 Shell 中输出内容或提示,也可以用它将数据写入文件。例如:

# 覆写文件
echo baidu > test.txt

# 追加内容
echo google >> test.txt

如果要写入的字符带有格式(例如代码缩进),直接使用 echo $temp > index.php 会导致格式丢失,此时可以用以下方法解决:

# 保留文本格式,注意变量的双引号
echo "$temp" > index.php