我正在寻找一种通用的命令行解决方案,允许我在配置文件(类似INI格式)中添加或修改配置选项。
大多数Linux配置文件使用类似INI的格式,其中 #
和 ;
作为注释符号,option=value
。
主要是我想找到一个可以接受文件名、选项和值的工具,并将更改配置以匹配这个值。
我希望将其用于编写自动部署脚本。我没有问题使用不在Debian或Ubuntu上默认安装的工具,只要它们存在于默认的发行版存储库中(如果需要,我可以执行apt-get install xxx
)。
例如:change-config /etc/default/nginx ULIMIT '"-n 4096"'
预期结果应该是在nginx文件中有 ULIMIT="-n 4096"
。显然,如果已经存在并且具有相同的值,则不应该做任何事情。如果它存在,则注释旧行并添加新行即可。
需要注意的是,这些配置文件可以在参数之间有空格/制表符,因此如果你有ULIMIT = "..."
,那么仍然是相同的命令。这就是为什么我在寻找比sed
更好的工具,因为有许多边角情况需要评估。
此外,我不想重新发明轮子,并且我怀疑我是第一个寻找这种问题的解决方案的人。
.ini
文件通常具有非Unix工具友好的布局。但是您所描述的听起来像是典型的Unixenv
或.rc
文件。没有特定的工具可以完全满足您的要求,但是可以编写一个小型shell脚本来实现。请了解bash
,sed
和/或awk
。此外,请不要计划使用configure
作为您的脚本名称,因为该名称是Unix标准安装模式的一部分,即configure; make; make install
。祝你好运。 - shellter