1 <?xml version='1.0'?> <!--*-nxml-*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
6 This file is part of systemd.
8 Copyright 2014 Lennart Poettering
10 systemd is free software; you can redistribute it and/or modify it
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
13 (at your option) any later version.
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
24 <refentry id="systemd-escape"
25 xmlns:xi="http://www.w3.org/2001/XInclude">
28 <title>systemd-escape</title>
29 <productname>systemd</productname>
33 <contrib>Developer</contrib>
34 <firstname>Lennart</firstname>
35 <surname>Poettering</surname>
36 <email>lennart@poettering.net</email>
42 <refentrytitle>systemd-escape</refentrytitle>
43 <manvolnum>1</manvolnum>
47 <refname>systemd-escape</refname>
48 <refpurpose>Escape strings for usage in system unit names</refpurpose>
53 <command>systemd-escape <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">STRING</arg></command>
58 <title>Description</title>
60 <para><command>systemd-escape</command> may be used to
61 escape strings for inclusion in systemd unit
62 names. The command may be used to escape and to undo
63 escaping of strings.</para>
65 <para>The command takes any number of strings on the
66 command line, and will process them individually, one
67 after the other. It will output them separated by
68 spaces to stdout.</para>
70 <para>By default this command will escape the strings
71 passed, unless <option>--unescape</option> is passed
72 which results in the inverse operation being
73 applied. If <option>--mangle</option> a special mode
74 of escaping is applied instead, which assumes a string
75 to be already escaped but will escape everything that
76 appears obviously non-escaped.</para>
80 <title>Options</title>
82 <para>The following options are understood:</para>
86 <term><option>--suffix=</option></term>
88 <listitem><para>Appends the specified
89 unit type suffix to the escaped
90 string. Takes one of the unit types
91 supported by systemd, such as
92 <literal>.service</literal> or
93 <literal>.mount</literal>. May not be
94 used in conjunction with
95 <option>--template=</option>,
96 <option>--unescape</option> or
97 <option>--mangle</option>.</para></listitem>
101 <term><option>--template=</option></term>
103 <listitem><para>Inserts the escaped
104 strings in a unit name template. Takes
105 a unit name template such as
106 <filename>foobar@.service</filename>
107 May not be used in conjunction with
108 <option>--suffix=</option>,
109 <option>--unescape</option> or
110 <option>--mangle</option>.</para></listitem>
114 <term><option>--path</option></term>
115 <term><option>-p</option></term>
117 <listitem><para>When escaping or
118 unescaping a string, assume it refers
119 to a file system path. This enables
120 special processing of the initial
121 <literal>/</literal> of the
122 path.</para></listitem>
126 <term><option>--unescape</option></term>
128 <listitem><para>Instead of escaping
129 the specified strings, undo the
130 escaping, reversing the operation. May
131 not be used in conjunction with
132 <option>--suffix=</option>,
133 <option>--template=</option> or
134 <option>--mangle</option>.</para></listitem>
138 <term><option>--mangle</option></term>
141 <option>--escape</option>, but only
142 escape characters that are obviously
143 not escaped yet, and possibly
144 automatically append an appropriate
145 unit type suffix to the string. May
146 not be used in conjunction with
147 <option>--suffix=</option>,
148 <option>--template=</option> or
149 <option>--unescape</option>.</para></listitem>
152 <xi:include href="standard-options.xml" xpointer="help" />
153 <xi:include href="standard-options.xml" xpointer="version" />
159 <title>Examples</title>
161 <para>Escape a single string:</para>
162 <programlisting>$ systemd-escape 'Hallöchen, Meister'
163 Hall\xc3\xb6chen\x2c\x20Meister</programlisting>
165 <para>To undo escaping on a single string:</para>
166 <programlisting>$ systemd-escape -u 'Hall\xc3\xb6chen\x2c\x20Meister'
167 Hallöchen, Meister</programlisting>
169 <para>To generate the mount unit for a path:</para>
170 <programlisting>$ systemd-escape -p --suffix=mount "/tmp//waldi/foobar/"
171 tmp-waldi-foobar.mount</programlisting>
173 <para>To generate instance names of three strings</para>
174 <programlisting>$ systemd-escape --template=systemd-nspawn@.service 'My Container 1' 'containerb' 'container/III'
175 systemd-nspawn@My\x20Container\x201.service systemd-nspawn@containerb.service systemd-nspawn@container-III.service</programlisting>
179 <title>Exit status</title>
181 <para>On success, 0 is returned, a non-zero failure
182 code otherwise.</para>
186 <title>See Also</title>
188 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
189 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>