首页 > 编程知识 正文

配置文件的类型(cfg配置文件格式)

时间:2023-05-03 14:44:41 阅读:91718 作者:2244

的常用配置文件格式有几种,每种格式都有自己的优点。 从中找出最适合你的格式吧!

计算机有成千上万个配置文件。 虽然你可能永远不会和其中的大部分文件直接交互,但是它们确实散落在你的/etc和~/.config,~/.local,/usr文件夹里。 也可能在/var,甚至/opt文件夹中。 如果无意中打开或更改了配置文件,您可能会怀疑,为什么一个配置文件看起来像一种格式,而另一个配置文件看起来却完全不同。

存储配置是一项灵活的任务。 因为开发人员只要知道代码如何将数据保存在文件中,就可以很容易地编写代码根据需要提取数据。 但是,由于科技界非常喜欢有详细文档的标准化产品,多年来出现了几种常用格式来简化配置任务。

为什么我们需要配置文件

轮廓对现代计算很重要。 使用它们,可以定制与APP的交互方式,也可以定制APP与系统中其他程序的交互方式。 如果有配置文件,每次启动APP时都会有“记忆”,记录着该程序的使用方法。

配置文件的结构很简单,通常确实很简单。 例如,在创建APP时,程序只能知道用户的首选名称,而其唯一的配置文件只能包含用户名一词。 如下所示。

Tux

但是,配置文件通常有密钥和值,因为APP通常需要跟踪的不仅仅是信息。

名称=' tux '

species='彭Guin '

即使没有编程经验,也可以想象代码如何分析这些数据。 这里有两个简单的例子。 一个使用awk命令,另一个使用grep命令。 两个示例都只关注包含NAME“键”的行,并返回等号(=)之后出现的“值”。

$ awk-f '=' ' /名称/{打印$2}; ' }' myconfig.ini

' Tux '号航空母舰

$ grep NAME fake.txt | cut -d'=' -f2

' Tux '号航空母舰

同样的原则适用于任意编程语言和任意配置文件。 如果有统一的数据结构,可以根据需要编写简单的代码进行提取和分析。

选择格式

为了保证一般的有效性,配置文件最重要的一点是一致性和可预测性。 我绝对不想以保存用户首选项的名义,将信息自由保存在文件中,并花几天时间逆向工程,最终找到文件中出现的随机信息。

的常用配置文件格式有几种,每种格式都有自己的优点。

INI

INI文件采用键-值对的形式。

示例

名称=tux

样式=构件,构件

启用=1

这个简单的配置样式很直观,不要选择使用unampref之类的神秘键名来代替name。 这些键值对很容易分析和编辑。

除了键和值之外,INI格式还可以划分章节。 在以下代码示例中,“[example]”和“[demo]”是配置文件的两个部分。

示例

名称=tux

样式=构件,构件

启用=1

示范法

名称=基本

全屏=1

这些语法的分析有点复杂,因为它们有两个name键。 想象一下,如果粗心的程序员在这个配置文件中查询名称,总是会返回Beastie。 因为这是文件中name的最后定义值。 在分析这些文件时,开发人员必须在每个部分中仔细搜索密钥。 这可能会很麻烦,具体取决于用于分析文件的语言。 但是,它仍然是一种常见的格式,大多数语言都有一个现成的库,允许程序员解析INI文件。

YAML

YAML文件是一个结构化列表,可以包含值或键值对。

---

样本:

名称: ' tux '。

样式:

- '构件'

- 'fidgety ' '

启用: 1

YML格式之所以流行,部分原因是它看起来很漂亮。 要将数据相对于较高的数据放置在特定位置,除此之外的语法不多。 但是,对某些人来说这种特色,对其他人来说可能是个问题。 很多开发者不愿意使用YAML是因为他们很重视本质上不存在的东西。 如果YAML的缩进错误,YAML分析器可能会将你的文件视为无效文件。 即使不视为无效,返回的数据也可能是错误的。

大多数语言都有YAML解析器,并有良好的开源YAML linters (验证语法的APP )以确保YAML文件的完整性。

JSON

JSON文件在技术上是YAML的子集,因此语法完全不同,但数据结构相同。

{

'样本' : {

名称:

' Tux '号航空母舰

]、

“样式”:

构件。

' fidgety '足球俱乐部

]、

“启用”: 1

}

}

JSON是JavaScript程序员,

中很流行,这并不奇怪,因为 JSON 全称为JavaScript 对象符号JavaScript Object Notation。由于与 Web 开发密切相关,JSON 是 Web API 的常见输出格式。大多数编程语言都有解析 JSON 的库。

XML

XML 使用标签作为键,将配置值围绕起来:

XML 经常被 Java 程序员使用,Java 有一套丰富的 XML 解析器。虽然 XML 以非常严格而著称,但同时也非常灵活。与有一系列特定标签的 HTML 不同,XML 中可以随意发明自己的标签。只要始终坚持相同的构建规则,并有一个良好的库来解析它,你就可以准确而轻松地提取数据。

有一些很好的开源 linter 可以帮你验证 XML 文件,并且大多数编程语言都提供用于解析 XML 的库。

二进制格式

Linux 以纯文本配置为傲。这样做的优点是可以使用 cat等基本工具查看配置数据,甚至可以使用你最喜欢的文本编辑器来编辑配置。

但是,某些应用程序使用二进制格式配置,就意味着数据以某种非自然语言的格式进行编码。这些文件通常需要一个特殊的应用程序(通常是它们要配置的应用程序)来解释它们的数据。你无法查看这些文件,至少无法以任何有意义的方式查看,并且无法在其宿主应用程序之外编辑它们。选用二进制格式的一些原因如下:

速度:程序员可以使用自定义符号在二进制配置文件中的某些点注册特定的信息位。提取数据时不涉及搜索,因为所有内容都已标注了索引。大小:文本文件可能会变大,如果选择压缩文本文件,实际上是在将其转换为二进制格式。二进制文件可以通过编码技巧变得更小(文本文件也是如此,但在某些时候,你的优化会使数据变得晦涩,以至于文件也成了二进制文件)。晦涩:一些程序员甚至不希望人们查看他们的配置文件,因此将它们编码为二进制数据。这通常只会让用户感到沮丧,并不是使用二进制格式的好理由。

如果必须使用二进制格式进行配置,请使用已作为开放标准存在的格式,例如 NetCDF。

找到有效的配置格式

配置格式帮助开发人员存储应用程序所需的数据,并帮助用户存储他们希望应用程序如何操作的偏好项。对于应该使用什么格式的问题,可能没有错误的答案,只要你觉得所使用的语言能很好地支持就可以。在开发应用程序时,查看可用格式,用一些样例数据建模,查看和评估你的编程语言提供的库和实用程序,然后选择你觉得最合适的一种格式吧。

via: https://opensource.com/article/21/6/what-config-files

作者:Seth Kenlon选题:lujun9972译者:unigeorge校对:wxy

本文由 LCTT原创编译,Linux中国荣誉推出

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。