前言
YAML(YAML Ain’t Markup Language)是一种易读的数据序列化格式,广泛用于配置文件(如Docker Compose、Kubernetes、Ansible等)。以下是其核心语法:
1. 基本规则
- 缩进表示层级:使用空格(不能用Tab),通常2或4个空格
- 键值对:
key: value
(冒号后必须加空格)name: Alice age: 30
- 注释:以
#
开头# 这是注释
2. 数据类型
标量(Scalars)
- 字符串(默认不用引号,特殊字符需用双引号)
path: /usr/bin # 普通字符串 message: "Hello\nWorld" # 转义字符
- 数值
integer: 42 float: 3.14
- 布尔值
is_active: true # 或 false enabled: yes # 或 no(兼容写法)
- 空值
result: null # 或 ~
集合
- 列表(List):用
-
开头colors: - red - green - blue # 行内写法 colors: [red, green, blue]
- 字典(Map):嵌套键值对
person: name: Bob age: 25 # 行内写法 person: {name: Bob, age: 25}
3. 多行字符串
- 保留换行(
|
)message: | This is a multi-line string.
- 折叠换行(
>
):换行转空格summary: > This is a long sentence in one line.
4. 高级特性
锚点与别名(复用数据)
defaults: &base_config # 定义锚点
timeout: 60
retries: 3
production:
<<: *base_config # 合并锚点内容
domain: "example.com"
多文档支持
用 ---
分隔多个YAML文档
---
doc1: "First document"
...
---
doc2: "Second document"
5. 特殊语法
- 强制类型转换:
!!类型
str_as_int: !!int "123" # 字符串转整数
- 复合键:用
?
表示复杂键名? [name, age] : value
6. 示例
# 完整示例
server:
host: "127.0.0.1"
ports:
- 80
- 443
environment: production
features:
auto_restart: true
database:
credentials:
username: admin
password: "secret"
logging:
files:
- /var/log/app.log
max_size: "10MB"
# 多行文本
description: |
This is a YAML demo
spanning multiple lines.
注意事项
- 禁止使用Tab缩进
- 字符串不需要引号,但包含
:
,{
,[
,,
等符号时必须加引号 - 区分大小写(
True
≠true
)
💡 工具推荐:用 YAML Lint 在线验证语法。
常见应用:Kubernetes manifests, GitHub Actions, Docker Compose, CI/CD配置等。
结语
第三百五十五篇博文写完,开心!!!!
今天,也是充满希望的一天。