我正在寻找一个通用的命令行解决方案,可以让我添加或修改配置文件(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
更好的东西,因为有很多角落的情况下评估。
而且,我不想重新发明轮子,我怀疑我是第一个寻找解决这类问题的人。
4条答案
按热度按时间zzwlnbp81#
git config
实际上是一个半通用的INI接口。字符串
它不支持添加顶级键。所有键都必须放在INI样式组中,因此上面的“somegroup.”不适合你的任务,但我想我会在这里提到它,让其他人找到他们的方式。
pexxcrt22#
尝试crudini. BTW我认为这个文件是一个shell文件,而不是一个ini文件,但crudini仍然可以在这种情况下工作:
字符串
vawmfj5a3#
Augeas /
augtool
的目标是做到这一点,尽管你需要合适的透镜来适应你所需要的文件类型(你也可以自己编写),例如Nginx lens。如果需要,它还具有API。
jslywgbw4#
您可以使用
python
执行此操作,如此相关问题Change value in ini file using ConfigParser Python中所述。虽然几乎每个Linux发行版都已经安装了
python
,但您不需要额外的工具:-)。