banner
Yaml 备忘录

Yaml 备忘录

Scroll down

YAML 备忘清单

这是理解和编写 YAML 格式配置文件的快速参考备忘单。

入门

介绍

YAML 是一种数据序列化语言,旨在供人类直接读写

  • YAML 不允许使用制表符
  • 元素部分之间必须有空间
  • YAML 区分大小写
  • .yaml.yml 扩展名结束您的 YAML 文件
  • YAML 是 JSON 的超集
  • Ansible playbook 是 YAML 文件

标量类型

1
2
3
4
5
6
7
n1: 1            # 整数
n2: 1.234 # 浮点
s1: 'abc' # 字符串
s2: "abc" # 字符串
s3: abc # 字符串
b: false # 布尔类型
d: 2015-04-05 # 日期类型

↓ 等效的 JSON

1
2
3
4
5
6
7
8
9
{
"n1": 1,
"n2": 1.234,
"s1": "abc",
"s2": "abc",
"s3": "abc",
"b": false,
"d": "2015-04-05"
}

使用空格缩进。 元素部分之间必须有空间。

变量

1
2
some_thing: &VAR_NAME foobar
other_thing: *VAR_NAME

↓ 等效的 JSON

1
2
3
4
{
"some_thing": "foobar",
"other_thing": "foobar"
}

注释

1
2
3
4
5
# A single line comment example
# block level comment example
# comment line 1
# comment line 2
# comment line 3

多行字符串

1
2
3
description: |
hello
world

↓ 等效的 JSON

1
{"description": "hello\nworld\n"}

继承

1
2
3
4
5
6
parent: &defaults
a: 2
b: 3
child:
<<: *defaults
b: 4

↓ 等效的 JSON

1
2
3
4
5
6
7
8
9
10
{
"parent": {
"a": 2,
"b": 3
},
"child": {
"a": 2,
"b": 4
}
}

参考

1
2
3
4
5
6
values: &ref
- Will be
- reused below

other_values:
i_am_ref: *ref

↓ 等效的 JSON

1
2
3
4
5
6
7
8
9
10
11
12
{
"values": [
"Will be",
"reused below"
],
"other_values": {
"i_am_ref": [
"Will be",
"reused below"
]
}
}

折叠的字符串

1
2
3
description: >
hello
world

↓ 等效的 JSON

1
{"description": "hello world\n"}

两份文件

1
2
3
4
---
document: this is doc 1
---
document: this is doc 2

YAML使用---将指令与文档内容分开。

YAML Collections

序列

1
2
3
- Mark McGwire
- Sammy Sosa
- Ken Griffey

↓ 等效的 JSON

1
2
3
4
5
[
"Mark McGwire",
"Sammy Sosa",
"Ken Griffey"
]

映射

1
2
3
hr:  65       # Home runs
avg: 0.278 # Batting average
rbi: 147 # Runs Batted In

↓ 等效的 JSON

1
2
3
4
5
{
"hr": 65,
"avg": 0.278,
"rbi": 147
}

映射到序列

1
2
3
4
attributes:
- a1
- a2
methods: [getter, setter]

↓ 等效的 JSON

1
2
3
4
{
"attributes": ["a1", "a2"],
"methods": ["getter", "setter"]
}

映射序列

1
2
3
4
5
6
7
8
children:
- name: Jimmy Smith
age: 15
- name: Jimmy Smith
age: 15
-
name: Sammy Sosa
age: 12

↓ 等效的 JSON

1
2
3
4
5
6
7
{
"children": [
{"name": "Jimmy Smith", "age": 15},
{"name": "Jimmy Smith", "age": 15},
{"name": "Sammy Sosa", "age": 12}
]
}

序列的序列

1
2
3
4
5
6
7
8
my_sequences:
- [1, 2, 3]
- [4, 5, 6]
-
- 7
- 8
- 9
- 0

↓ 等效的 JSON

1
2
3
4
5
6
7
{
"my_sequences": [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9, 0]
]
}

映射的映射

1
2
3
4
5
Mark McGwire: {hr: 65, avg: 0.278}
Sammy Sosa: {
hr: 63,
avg: 0.288
}

↓ 等效的 JSON

1
2
3
4
5
6
7
8
9
10
{
"Mark McGwire": {
"hr": 65,
"avg": 0.278
},
"Sammy Sosa": {
"hr": 63,
"avg": 0.288
}
}

嵌套集合

1
2
3
4
5
6
7
8
Jack:
id: 1
name: Franc
salary: 25000
hobby:
- a
- b
location: {country: "A", city: "A-A"}

↓ 等效的 JSON

1
2
3
4
5
6
7
8
9
10
11
{
"Jack": {
"id": 1,
"name": "Franc",
"salary": 25000,
"hobby": ["a", "b"],
"location": {
"country": "A", "city": "A-A"
}
}
}

无序集

1
2
3
4
set1: !!set
? one
? two
set2: !!set {'one', "two"}

↓ 等效的 JSON

1
2
3
4
{
"set1": {"one": null, "two": null},
"set2": {"one": null, "two": null}
}

集合表示为一个映射,其中每个键都与一个空值相关联

有序映射

1
2
3
4
ordered: !!omap
- Mark McGwire: 65
- Sammy Sosa: 63
- Ken Griffy: 58

↓ 等效的 JSON

1
2
3
4
5
6
7
{
"ordered": [
{"Mark McGwire": 65},
{"Sammy Sosa": 63},
{"Ken Griffy": 58}
]
}

YAML 参考

条款

  • 序列又名数组或列表
  • 标量又名字符串或数字
  • 映射又名哈希或字典

基于 YAML.org refcard

文档指标

:- :-
% 指令指标
--- 文档标题
... 文档终结者

收集指标

:- :-
? 关键指标
: 价值指标
- 嵌套系列条目指示器
, 单独的内联分支条目
[] 环绕串联系列分支
{} 环绕在线键控分支

别名指标

:- :-
& 锚属性
* 别名指示符

特殊键

:- :-
= 默认“值”映射键
<< 合并来自另一个映射的键

标量指标

:- :-
'' 环绕内联未转义标量
" 环绕内嵌转义标量
` `
> 折叠标量指示器
- 剥离 chomp 修饰符(|->-
+ 保留 chomp 修饰符(|+>+
1-9 显式缩进修饰符(|1>2)。
修饰符可以组合(|2-, >+1

标签属性(通常未指定)

:- :-
none 未指定的标签(由应用程序自动解析)
! 非特定标签(默认情况下,!!map/!!seq/!!str
!foo 主要(按照惯例,表示本地 !foo 标记)
!!foo 次要的(按照惯例,表示 tag:yaml.org,2002:foo
!h!foo 需要 %TAG !h! <prefix>(然后表示 <prefix>foo
!<foo> 逐字标记(始终表示“foo”)

杂项指标

# 一次性评论指示器
`@ 两者都保留供将来使用

核心类型(默认自动标签)

!!map {Hash table, dictionary, mapping}
!!seq {List, array, tuple, vector, sequence}
!!str Unicode 字符串

转义码

Numeric

  • \x12 (8-bit)
  • \u1234 (16-bit)
  • \U00102030 (32-bit)

Protective

  • \\ (\)
  • \" (“)
  • \ ( )
  • \<TAB> (TAB)

C

  • \0 (NUL)
  • \a (BEL)
  • \b (BS)
  • \f (FF)
  • \n (LF)
  • \r (CR)
  • \t (TAB)
  • \v (VTAB)

额外的

  • \e (ESC)
  • \_ (NBSP)
  • \N (NEL)
  • \L (LS)
  • \P (PS)

更多类型

!!set {cherries, plums, apples}
!!omap [one: 1, two: 2]

与语言无关的标量类型

{~, null} 空(无值)。
[1234, 0x4D2, 02333] [十进制整数、十六进制整数、八进制整数]
[1_230.15, 12.3015e+02] [固定浮点数,指数浮点数]
[.inf, -.Inf, .NAN] [无穷大(浮点数),负数,不是数字]
{Y, true, Yes, ON} 布尔真
{n, FALSE, No, off} 布尔假

另见

其他文章
cover
HTML 备忘录
  • 25/01/08
  • 10:35
  • 前端技术
cover
Vue3 备忘录
  • 25/01/08
  • 10:35
  • 前端技术
目录导航 置顶
  1. 1. YAML 备忘清单
    1. 1.1. 入门
      1. 1.1.1. 介绍
      2. 1.1.2. 标量类型
      3. 1.1.3. 变量
      4. 1.1.4. 注释
      5. 1.1.5. 多行字符串
      6. 1.1.6. 继承
      7. 1.1.7. 参考
      8. 1.1.8. 折叠的字符串
      9. 1.1.9. 两份文件
    2. 1.2. YAML Collections
      1. 1.2.1. 序列
      2. 1.2.2. 映射
      3. 1.2.3. 映射到序列
      4. 1.2.4. 映射序列
      5. 1.2.5. 序列的序列
      6. 1.2.6. 映射的映射
      7. 1.2.7. 嵌套集合
      8. 1.2.8. 无序集
      9. 1.2.9. 有序映射
    3. 1.3. YAML 参考
      1. 1.3.1. 条款
      2. 1.3.2. 文档指标
      3. 1.3.3. 收集指标
      4. 1.3.4. 别名指标
      5. 1.3.5. 特殊键
      6. 1.3.6. 标量指标
      7. 1.3.7. 标签属性(通常未指定)
      8. 1.3.8. 杂项指标
      9. 1.3.9. 核心类型(默认自动标签)
      10. 1.3.10. 转义码
      11. 1.3.11. 更多类型
      12. 1.3.12. 与语言无关的标量类型
    4. 1.4. 另见
请输入关键词进行搜索