当前位置: 首页 > 文档资料 > systemd 中文手册 >

systemd-escape 中文手册

优质
小牛编辑
134浏览
2023-12-01

名称

systemd-escape — 转义与还原单元名称中的特殊字符

大纲

systemd-escape [OPTIONS...] [STRING...]

描述

systemd-escape 可用于转义单元名称中的特殊字符,也可用于还原操作。

可以在命令行上指定任意数量的字符串,表示依次分别处理它们。处理结果将使用空格分隔。

默认的行为是转义操作,但若使用了 --unescape 选项,则表示反向的还原操作。如果使用了 --mangle 选项,则会使用一种特殊的转义规则,也就是假定字符串已经经过了转义,仅转义那些显而易见必须转义的字符。

关于转义与还原算法的细节,参见systemd.unit(5) 手册。

选项

能够识别的命令行选项如下:

--suffix=

在输出结果尾部添加一个单元类型后缀。必须是 "service" 或 "mount" 这样实际有效的后缀。不能与 --template=, --unescape , --mangle 选项一起使用。

--template=

将转义之后的结果插入一个单元名称模版。接受一个类似 foobar@.service 这样的模版名。但与 --unescape 一起使用时,则接受此模板实例化之后的单元名称,并仅提取和还原实例化的部分。不能与 --suffix=, --instance, --mangle 选项一起使用。

--path, -p

在转义或还原字符串时,假定其是一个文件系统路径。这将导致删除字符串中的开头/结尾/重复的 "/" 字符、 "." 与 ".." 字符。特别适合于生成可被单元文件中的 "%f" 替换符还原的字符串。参见 systemd.unit(5) 手册。

--unescape, -u

将已经转义过的字符串还原。不能与 --suffix=--mangle 选项一起使用。

--mangle, -m

--escape 类似,但是仅转义那些显而易见必须转义的字符,并且允许自动添加适当的单元类型后缀。不能与 --suffix=, --template=, --unescape 选项一起使用。

--instance

用于 --unescape 选项,表示只还原与显示一个实例化单元名称中的实例参数。用于尚未实例化的模板(例如 ssh@.service)或非实例化单元(例如 ssh.service)会导致出错。必须和 --unescape 一起使用,禁止与 --template 一起使用。

-h, --help

显示简短的帮助信息并退出。

--version

显示简短的版本信息并退出。

例子

转义一个字符串

$ systemd-escape 'Hallöchen, Meister'
Hall\xc3\xb6chen\x2c\x20Meister

还原一个字符串

$ systemd-escape -u 'Hall\xc3\xb6chen\x2c\x20Meister'
Hallöchen, Meister

为一个路径生成对应的单元名

$ systemd-escape -p --suffix=mount "/tmp//waldi/foobar/"
tmp-waldi-foobar.mount

从三个字符串派生三个对应的单元实例名

$ systemd-escape --template=systemd-nspawn@.service 'My Container 1' 'containerb' 'container/III'
systemd-nspawn@My\x20Container\x201.service systemd-nspawn@containerb.service systemd-nspawn@container-III.service

从实例化单元中提取实例参数:

$ systemd-escape -u --instance 'systemd-nspawn@My\x20Container\x201.service'
My Container 1

从特定模板的实例化单元中提取实例参数:

$ systemd-escape -u --template=systemd-nspawn@.service 'systemd-nspawn@My\x20Container\x201.service'
My Container 1

退出状态

返回值为 0 表示成功,非零返回值表示失败代码。

参见

systemd(1),systemd.unit(5),systemctl(1)