shell 简单的Linux命令行命令,用于修改类似INI的配置文件中的选项

aemubtdh  于 6个月前  发布在  Shell
关注(0)|答案(4)|浏览(90)

我正在寻找一个通用的命令行解决方案,可以让我添加或修改配置文件(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更好的东西,因为有很多角落的情况下评估。
而且,我不想重新发明轮子,我怀疑我是第一个寻找解决这类问题的人。

zzwlnbp8

zzwlnbp81#

git config实际上是一个半通用的INI接口。

❱ git config --file=/etc/default/nginx somegroup.ULIMIT '-n 4096'
❱ cat /etc/default/nginx
[somegroup]
    ULIMIT = -n 4096
❱ git config --file=/etc/default/nginx somegroup.ULIMIT
"-n 4096"

字符串
它不支持添加顶级键。所有键都必须放在INI样式组中,因此上面的“somegroup.”不适合你的任务,但我想我会在这里提到它,让其他人找到他们的方式。

pexxcrt2

pexxcrt22#

尝试crudini. BTW我认为这个文件是一个shell文件,而不是一个ini文件,但crudini仍然可以在这种情况下工作:

crudini --set /etc/default/nginx '' ULIMIT '"-n 4096"'

字符串

vawmfj5a

vawmfj5a3#

Augeas / augtool的目标是做到这一点,尽管你需要合适的透镜来适应你所需要的文件类型(你也可以自己编写),例如Nginx lens
如果需要,它还具有API。

jslywgbw

jslywgbw4#

您可以使用python执行此操作,如此相关问题Change value in ini file using ConfigParser Python中所述。
虽然几乎每个Linux发行版都已经安装了python,但您不需要额外的工具:-)。

相关问题