【发布时间】:2014-05-15 02:34:36
【问题描述】:
我正在寻找一个通用的命令行解决方案,它允许我在配置文件(类似 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 更好的东西,因为有很多极端情况需要评估。
另外,我不想重新发明轮子,我怀疑我是第一个为这类问题寻找解决方案的人。
【问题讨论】:
-
@fedorqui 谢谢,我改进了问题,添加了更多信息。
-
我不知道是否有可用于 ini 文件解析的实用程序,但您可以在 c++ 中制作自己的实用程序 参考stackoverflow.com/questions/15647299/… 此链接向您展示如何使用 boost 库读取写入 init 文件C++。
-
.ini文件通常具有非 unix-util-friendly 的布局。但是您所描述的听起来像是典型的 unixenv或.rc文件。没有特定的工具可以完全满足您的要求,但它是一个小型 shell 脚本。阅读bash、sed和/或awk。也不打算使用configure作为脚本名称,因为该名称是众所周知的脚本,它是 unix 标准安装模式的一部分,即configure; make; make install。祝你好运。 -
如果您想坚持使用 shell,this question 可能会帮助您入门。
标签: linux shell automation configuration-files