配置文件格式参考:INI、ENV、PLIST、HCL 等
在现代软件开发和系统管理中,我们会处理数十种不同的配置文件格式。虽然 JSON、YAML 和 TOML 是当前行业的首选,但在特定生态系统中,许多其他扩展名仍然存在,如 Linux 系统、Windows 注册表、Apple macOS、Java 和基础架构即代码 (IaC)。
本参考指南涵盖了您会遇到的最常见的“遗留”和专门的配置文件扩展名。
快速参考表:配置文件格式
| 扩展名 | 全称 | 生态系统 | 语法类型 |
|---|---|---|---|
.ini, .conf, .cfg |
初始化 / 配置 (Initialization / Configuration) | Linux, Windows, PHP, Python | 键值对 / 分段 |
.env |
环境变量 (Environment Variables) | Web 开发 (Node.js, Docker, Python) | Key=Value |
.properties |
Java 属性 (Java Properties) | Java, Spring, Android | Key=Value (或 XML) |
.plist |
属性列表 (Property List) | macOS, iOS, Apple | XML 或 二进制 |
.hcl, .tf, .tfvars |
HashiCorp 配置语言 (HashiCorp Configuration Language) | Terraform, Nomad, Consul | 领域特定语言 (DSL) |
.ovpn, .wg |
OpenVPN / WireGuard 配置 | 网络, VPN | 基于指令 |
1. 系统与遗留配置 (.ini, .conf, .cfg)
这些是配置文件的“元老”。它们简单、基于文本且易于阅读。
- INI 文件: 常用于 Windows 和较旧的软件。它们使用
[Sections]来对键值对进行分组。[database] host = 127.0.0.1 port = 5432 - CONF / CFG: 主要用于 Linux 的
/etc/目录(例如nginx.conf,redis.conf)。语法各异——有些使用简单的键值对,而另一些则使用大括号或自定义指令。
2. 环境变量 (.env)
.env 文件是现代 Web 开发中存储“秘密”和特定于环境的设置(如数据库 URL 或 API 密钥)的标准,这些设置不应提交到 Git。
- 语法: 极其简单的
KEY=VALUE格式。 - 最佳实践: 永远不要将
.env提交到版本控制系统。使用.env.example文件来显示所需的变量。
3. 企业与 Java (.properties)
Java 虚拟机 (JVM) 已使用数十年。它类似于 .env 文件,但支持更复杂的转义,甚至可以格式化为 XML。
- 常见用途: Spring Boot 应用程序中的
application.properties。 - 语法:
database.url=jdbc:mysql://localhost:3306/db
4. Apple 生态系统 (.plist)
属性列表 (Property List) 是 macOS 和 iOS 应用程序的标准。它们存储用户偏好和应用程序元数据(如 Info.plist)。
- 格式: 它们可以存储为易于阅读的 XML 或经过优化的 二进制 文件。
- 如何查看: 在 macOS 上使用“属性列表编辑器”,或使用
plutil命令行工具将它们转换为 JSON。
5. 基础架构即代码 (.hcl, .tf, .tfvars)
HCL 由 HashiCorp 创建,旨在弥补易于阅读的 YAML 和机器可读的 JSON 之间的差距。它是 Terraform 的主要语言。
- HCL: 表现力极强,支持注释、变量和函数。
- TF: 专门用于 Terraform 资源定义。
- TFVARS: 用于将变量值传递到 Terraform 计划中。
6. 网络与 VPN (.ovpn, .wg)
如果您曾经设置过安全连接,您一定见过这些:
- OVPN: 一个复杂的类似脚本的文件,包含 OpenVPN 服务器地址、端口信息,以及通常嵌入的证书 (
<ca>,<cert>,<key>)。 - WG: 更简单的 WireGuard 配置。它使用整洁的 INI 风格格式来定义
[Interface]和[Peer]。
处理配置文件的工具
- 编辑器: VS Code、Sublime Text 和 JetBrains IDE 都有适用于上述几乎所有格式的插件,以提供语法高亮和验证。
- 命令行转换器:
yq: 一个便携式的命令行 YAML、JSON、XML、CSV 和 TOML 处理器(类似于jq)。plutil: macOS 内置,用于转换.plist文件。terraform fmt: 用于格式化.tf和.hcl文件。
常见问题 (FAQ)
问:我可以在 .env 文件中使用注释吗?
答: 大多数 .env 解析器(如 Node.js 中的 dotenv)支持以 # 开头的注释。但是,最安全的方法是将注释放在单独的一行,而不是行内。
问:如何将二进制 .plist 转换为 XML?
答: 在 macOS 上,您可以运行:plutil -convert xml1 filename.plist。
问:为什么我的 .ini 文件有 [方括号]?
答: 方括号表示 分段 (Section)。它们允许您将相关的设置分组在一起,防止名称冲突(例如,在 [http] 下有一个 port,在 [ssh] 下有另一个不同的 port)。
问:.hcl 与 JSON 兼容吗?
答: 是的!HCL 设计为与 JSON 完全兼容。如果您愿意,实际上可以用 .tf.json 编写您的 Terraform 文件(尽管这对人类来说可读性较差)。
Tool3M 上的相关工具
- JSON 格式化工具: 格式化并验证您的 JSON 配置文件。
- YAML 转 JSON 转换器: 了解常见数据格式之间的关系。