.github
.husky
assets
docs
adb.md
adobe-lightroom.md
adobe-photoshop.md
adobe-xd.md
android-studio.md
ansible.md
apt.md
ascii-code.md
aspect-ratio.md
awk.md
bash.md
blender.md
c.md
cargo.md
chmod.md
cmake.md
cmd.md
cocoapods.md
colors-named.md
conan.md
conda.md
cpp.md
cron.md
cs.md
css.md
curl.md
dart.md
django.md
docker.md
dockerfile.md
ejs.md
electron.md
emacs.md
emmet.md
emoji.md
es6.md
expressjs.md
fastapi.md
feds.md
ffmpeg.md
find.md
firefox.md
flask.md
flutter.md
gdb.md
git.md
github-actions.md
github.md
gitlab-ci.md
gitlab.md
gmail.md
golang.md
google-chrome.md
graphql.md
grep.md
homebrew.md
html-char.md
html.md
htmx.md
htop.md
http-status-code.md
ini.md
intelli-j-idea.md
iptables.md
iso-639-1.md
java.md
javascript.md
jest.md
jq.md
jquery.md
json.md
julia.md
justfile.md
koajs.md
kotlin.md
kubernetes.md
laravel.md
latex.md
lerna.md
lessjs.md
linux-command.md
lsof.md
lua.md
make.md
markdown.md
matlab.md
mime.md
mitmproxy.md
mongodb.md
mysql.md
nestjs.md
netcat.md
netstat.md
nextjs.md
nginx.md
npm.md
openssl.md
oracle.md
package.json.md
pacman.md
php.md
pm2.md
postgres.md
ps.md
pycharm.md
python.md
pytorch.md
quickreference.md
react-native.md
react.md
reactrouter.md
redis.md
regex.md
resolutions.md
ruby.md
rust.md
sass.md
scala.md
screen.md
sed.md
semver.md
sketch.md
ssh.md
styled-components.md
stylus.md
sublime-text.md
subversion.md
swift.md
swiftui.md
symbol-code.md
sysdig.md
systemd.md
tailwindcss.md
tar.md
taskset.md
tmux.md
toml.md
typescript.md
vim.md
vscode.md
vue.md
vue2.md
webstorm.md
xcode.md
xpath.md
yaml.md
yarn.md
yum.md
zip.md
.dockerignore
.editorconfig
.gitattributes
.gitignore
.lintstagedrc
.markdownlint.json
.npmrc
.prettierignore
.prettierrc
.refsrc.json
CONTRIBUTING.md
Dockerfile
LICENSE
README.md
package.json
renovate.json
527 lines
8.2 KiB
Markdown
527 lines
8.2 KiB
Markdown
YAML 备忘清单
|
||
====
|
||
|
||
这是理解和编写 YAML 格式配置文件的快速参考备忘单。
|
||
|
||
入门
|
||
-----------
|
||
|
||
### 介绍
|
||
|
||
[YAML](https://yaml.org/) 是一种数据序列化语言,旨在供人类直接读写
|
||
|
||
- YAML 不允许使用制表符
|
||
- 元素部分之间必须有空间
|
||
- YAML 区分大小写
|
||
- 以 `.yaml` 或 `.yml` 扩展名结束您的 YAML 文件
|
||
- YAML 是 JSON 的超集
|
||
- Ansible playbook 是 YAML 文件
|
||
<!--rehype:className=style-round-->
|
||
|
||
### 标量类型
|
||
<!--rehype:wrap-class=row-span-2-->
|
||
|
||
```yaml
|
||
n1: 1 # 整数
|
||
n2: 1.234 # 浮点
|
||
s1: 'abc' # 字符串
|
||
s2: "abc" # 字符串
|
||
s3: abc # 字符串
|
||
b: false # 布尔类型
|
||
d: 2015-04-05 # 日期类型
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"n1": 1,
|
||
"n2": 1.234,
|
||
"s1": "abc",
|
||
"s2": "abc",
|
||
"s3": "abc",
|
||
"b": false,
|
||
"d": "2015-04-05"
|
||
}
|
||
```
|
||
|
||
使用空格缩进。 元素部分之间必须有空间。
|
||
|
||
### 变量
|
||
|
||
```yaml
|
||
some_thing: &VAR_NAME foobar
|
||
other_thing: *VAR_NAME
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"some_thing": "foobar",
|
||
"other_thing": "foobar"
|
||
}
|
||
```
|
||
|
||
### 注释
|
||
|
||
```yaml
|
||
# A single line comment example
|
||
# block level comment example
|
||
# comment line 1
|
||
# comment line 2
|
||
# comment line 3
|
||
```
|
||
|
||
### 多行字符串
|
||
|
||
```yaml
|
||
description: |
|
||
hello
|
||
world
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{"description": "hello\nworld\n"}
|
||
```
|
||
|
||
### 继承
|
||
<!--rehype:wrap-class=row-span-2-->
|
||
|
||
```yaml
|
||
parent: &defaults
|
||
a: 2
|
||
b: 3
|
||
child:
|
||
<<: *defaults
|
||
b: 4
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"parent": {
|
||
"a": 2,
|
||
"b": 3
|
||
},
|
||
"child": {
|
||
"a": 2,
|
||
"b": 4
|
||
}
|
||
}
|
||
```
|
||
|
||
### 参考
|
||
<!--rehype:wrap-class=row-span-2-->
|
||
|
||
```yaml
|
||
values: &ref
|
||
- Will be
|
||
- reused below
|
||
|
||
other_values:
|
||
i_am_ref: *ref
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"values": [
|
||
"Will be",
|
||
"reused below"
|
||
],
|
||
"other_values": {
|
||
"i_am_ref": [
|
||
"Will be",
|
||
"reused below"
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
### 折叠的字符串
|
||
|
||
```yaml
|
||
description: >
|
||
hello
|
||
world
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{"description": "hello world\n"}
|
||
```
|
||
|
||
### 两份文件
|
||
|
||
```yaml
|
||
---
|
||
document: this is doc 1
|
||
---
|
||
document: this is doc 2
|
||
```
|
||
|
||
YAML使用`---`将指令与文档内容分开。
|
||
|
||
YAML Collections
|
||
-----------
|
||
|
||
### 序列
|
||
|
||
```yaml
|
||
- Mark McGwire
|
||
- Sammy Sosa
|
||
- Ken Griffey
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
[
|
||
"Mark McGwire",
|
||
"Sammy Sosa",
|
||
"Ken Griffey"
|
||
]
|
||
```
|
||
|
||
### 映射
|
||
|
||
```yaml
|
||
hr: 65 # Home runs
|
||
avg: 0.278 # Batting average
|
||
rbi: 147 # Runs Batted In
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"hr": 65,
|
||
"avg": 0.278,
|
||
"rbi": 147
|
||
}
|
||
```
|
||
|
||
### 映射到序列
|
||
|
||
```yaml
|
||
attributes:
|
||
- a1
|
||
- a2
|
||
methods: [getter, setter]
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"attributes": ["a1", "a2"],
|
||
"methods": ["getter", "setter"]
|
||
}
|
||
```
|
||
|
||
### 映射序列
|
||
|
||
```yaml
|
||
children:
|
||
- name: Jimmy Smith
|
||
age: 15
|
||
- name: Jimmy Smith
|
||
age: 15
|
||
-
|
||
name: Sammy Sosa
|
||
age: 12
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"children": [
|
||
{"name": "Jimmy Smith", "age": 15},
|
||
{"name": "Jimmy Smith", "age": 15},
|
||
{"name": "Sammy Sosa", "age": 12}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 序列的序列
|
||
|
||
```yaml
|
||
my_sequences:
|
||
- [1, 2, 3]
|
||
- [4, 5, 6]
|
||
-
|
||
- 7
|
||
- 8
|
||
- 9
|
||
- 0
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"my_sequences": [
|
||
[1, 2, 3],
|
||
[4, 5, 6],
|
||
[7, 8, 9, 0]
|
||
]
|
||
}
|
||
```
|
||
|
||
### 映射的映射
|
||
|
||
```yaml
|
||
Mark McGwire: {hr: 65, avg: 0.278}
|
||
Sammy Sosa: {
|
||
hr: 63,
|
||
avg: 0.288
|
||
}
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"Mark McGwire": {
|
||
"hr": 65,
|
||
"avg": 0.278
|
||
},
|
||
"Sammy Sosa": {
|
||
"hr": 63,
|
||
"avg": 0.288
|
||
}
|
||
}
|
||
```
|
||
|
||
### 嵌套集合
|
||
|
||
```yaml
|
||
Jack:
|
||
id: 1
|
||
name: Franc
|
||
salary: 25000
|
||
hobby:
|
||
- a
|
||
- b
|
||
location: {country: "A", city: "A-A"}
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"Jack": {
|
||
"id": 1,
|
||
"name": "Franc",
|
||
"salary": 25000,
|
||
"hobby": ["a", "b"],
|
||
"location": {
|
||
"country": "A", "city": "A-A"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 无序集
|
||
|
||
```yaml
|
||
set1: !!set
|
||
? one
|
||
? two
|
||
set2: !!set {'one', "two"}
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"set1": {"one": null, "two": null},
|
||
"set2": {"one": null, "two": null}
|
||
}
|
||
```
|
||
|
||
集合表示为一个映射,其中每个键都与一个空值相关联
|
||
|
||
### 有序映射
|
||
|
||
```yaml
|
||
ordered: !!omap
|
||
- Mark McGwire: 65
|
||
- Sammy Sosa: 63
|
||
- Ken Griffy: 58
|
||
```
|
||
|
||
#### ↓ 等效的 JSON
|
||
|
||
```json
|
||
{
|
||
"ordered": [
|
||
{"Mark McGwire": 65},
|
||
{"Sammy Sosa": 63},
|
||
{"Ken Griffy": 58}
|
||
]
|
||
}
|
||
```
|
||
|
||
YAML 参考
|
||
--------------
|
||
|
||
### 条款
|
||
|
||
- 序列又名数组或列表
|
||
- 标量又名字符串或数字
|
||
- 映射又名哈希或字典
|
||
<!--rehype:className=style-round-->
|
||
|
||
基于 YAML.org [refcard](https://yaml.org/refcard.html)。
|
||
|
||
### 文档指标
|
||
|
||
:- | :-
|
||
:- | :-
|
||
`%` | 指令指标
|
||
`---` | 文档标题
|
||
`...` | 文档终结者
|
||
|
||
### 收集指标
|
||
<!--rehype:wrap-class=row-span-2-->
|
||
|
||
:- | :-
|
||
:- | :-
|
||
`?` | 关键指标
|
||
`:` | 价值指标
|
||
`-` | 嵌套系列条目指示器
|
||
`,` | 单独的内联分支条目
|
||
`[]` | 环绕串联系列分支
|
||
`{}` | 环绕在线键控分支
|
||
|
||
### 别名指标
|
||
|
||
:- | :-
|
||
:- | :-
|
||
`&` | 锚属性
|
||
`*` | 别名指示符
|
||
|
||
### 特殊键
|
||
|
||
:- | :-
|
||
:- | :-
|
||
`=` | 默认“值”映射键
|
||
`<<` | 合并来自另一个映射的键
|
||
|
||
### 标量指标
|
||
|
||
:- | :-
|
||
:- | :-
|
||
`''` | 环绕内联未转义标量
|
||
`"` | 环绕内嵌转义标量
|
||
`|` | 块标量指示器
|
||
`>` | 折叠标量指示器
|
||
`-` | 剥离 chomp 修饰符(`\|-` 或 `>-`)
|
||
`+` | 保留 chomp 修饰符(`\|+` 或 `>+`)
|
||
`1-9` | 显式缩进修饰符(`\|1` 或 `>2`)。 <br/> 修饰符可以组合(`\|2-`, `>+1`)
|
||
|
||
### 标签属性(通常未指定)
|
||
<!--rehype:wrap-class=col-span-2-->
|
||
|
||
:- | :-
|
||
:- | :-
|
||
`none` | 未指定的标签(由应用程序自动解析)
|
||
`!` | 非特定标签(默认情况下,`!!map`/`!!seq`/`!!str`)
|
||
`!foo` | 主要(按照惯例,表示本地 `!foo` 标记)
|
||
`!!foo` | 次要的(按照惯例,表示 `tag:yaml.org,2002:foo`)
|
||
`!h!foo` | 需要 `%TAG !h! <prefix>`(然后表示 `<prefix>foo`)
|
||
`!<foo>` | 逐字标记(始终表示“foo”)
|
||
<!--rehype:class=auto-wrap-->
|
||
|
||
### 杂项指标
|
||
|
||
| | |
|
||
|-----|-----------------------------|
|
||
| `#` | 一次性评论指示器 |
|
||
| <code>\`@</code> | 两者都保留供将来使用 |
|
||
|
||
### 核心类型(默认自动标签)
|
||
<!--rehype:wrap-class=row-span-2-->
|
||
|
||
| | |
|
||
|---------|------------------------------------------|
|
||
| `!!map` | `{Hash table, dictionary, mapping}` |
|
||
| `!!seq` | `{List, array, tuple, vector, sequence}` |
|
||
| `!!str` | Unicode 字符串 |
|
||
|
||
### 转义码
|
||
<!--rehype:wrap-class=row-span-3-->
|
||
|
||
#### Numeric
|
||
|
||
- `\x12` (8-bit)
|
||
- `\u1234` (16-bit)
|
||
- `\U00102030` (32-bit)
|
||
<!--rehype:className=cols-2 style-none-->
|
||
|
||
#### Protective
|
||
|
||
- `\\` (\\)
|
||
- `\"` (")
|
||
- `\` ( )
|
||
- `\<TAB>` (TAB)
|
||
<!--rehype:className=cols-3 style-none-->
|
||
|
||
#### C
|
||
|
||
- `\0` (NUL)
|
||
- `\a` (BEL)
|
||
- `\b` (BS)
|
||
- `\f` (FF)
|
||
- `\n` (LF)
|
||
- `\r` (CR)
|
||
- `\t` (TAB)
|
||
- `\v` (VTAB)
|
||
<!--rehype:className=cols-3 style-none-->
|
||
|
||
#### 额外的
|
||
|
||
- `\e` (ESC)
|
||
- `\_` (NBSP)
|
||
- `\N` (NEL)
|
||
- `\L` (LS)
|
||
- `\P` (PS)
|
||
<!--rehype:className=cols-3 style-none-->
|
||
|
||
### 更多类型
|
||
|
||
| | |
|
||
|----------|-----------------------------|
|
||
| `!!set` | `{cherries, plums, apples}` |
|
||
| `!!omap` | `[one: 1, two: 2]` |
|
||
|
||
### 与语言无关的标量类型
|
||
<!--rehype:wrap-class=col-span-2-->
|
||
|
||
| | |
|
||
|---------------------------|--------------------------------------------|
|
||
| `{~, null}` | 空(无值)。 |
|
||
| `[1234, 0x4D2, 02333]` | [十进制整数、十六进制整数、八进制整数] |
|
||
| `[1_230.15, 12.3015e+02]` | [固定浮点数,指数浮点数] |
|
||
| `[.inf, -.Inf, .NAN]` | [无穷大(浮点数),负数,不是数字] |
|
||
| `{Y, true, Yes, ON}` | 布尔真 |
|
||
| `{n, FALSE, No, off}` | 布尔假 |
|
||
<!--rehype:class=auto-wrap-->
|
||
|
||
另见
|
||
---
|
||
|
||
- [YAML Reference Card](https://yaml.org/refcard.html) _(yaml.org)_
|
||
- [Learn X in Y minutes](https://learnxinyminutes.com/docs/zh-cn/yaml-cn/) _(learnxinyminutes.com)_
|
||
- [YAML lint online](http://www.yamllint.com/) _(yamllint.com)_
|
||
- [INI 格式配置文件备忘清单](./ini.md) _(jaywcjlove.github.io)_
|
||
- [TOML 格式配置文件备忘清单](./toml.md) _(jaywcjlove.github.io)_
|