<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="systemd-id128" xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>systemd-id128</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>systemd-id128</refentrytitle>
    <manvolnum>1</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd-id128</refname>
    <refpurpose>Generate and print sd-128 identifiers</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>systemd-id128</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
      <arg choice="plain">new</arg>
    </cmdsynopsis>

    <cmdsynopsis>
      <command>systemd-id128</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
      <arg choice="plain">machine-id</arg>
    </cmdsynopsis>

    <cmdsynopsis>
      <command>systemd-id128</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
      <arg choice="plain">boot-id</arg>
    </cmdsynopsis>

    <cmdsynopsis>
      <command>systemd-id128</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
      <arg choice="plain">invocation-id</arg>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><command>id128</command> may be used to conveniently print
    <citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    UUIDs. What identifier is printed depends on the specific verb.</para>

    <para>With <command>new</command>, a new random identifier will be generated.</para>

    <para>With <command>machine-id</command>, the identifier of the current machine will be
    printed. See
    <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
    </para>

    <para>With <command>boot-id</command>, the identifier of the current boot will be
    printed.</para>

    <para>Both <command>machine-id</command> and <command>boot-id</command> may be combined
    with the <option>--app-specific=<replaceable>app-id</replaceable></option> switch to
    generate application-specific IDs. See
    <citerefentry><refentrytitle>sd_id128_get_machine</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    for the discussion when this is useful.</para>

    <para>With <command>invocation-id</command>, the identifier of the current service invocation
    will be printed. This is available in systemd services. See
    <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
    </para>

    <para>With <command>show</command>, well-known IDs are printed (for now, only GPT partition type UUIDs),
    along with brief identifier strings. When no arguments are specified, all known IDs are shown. When
    arguments are specified, they must be the identifiers or ID values of one or more known IDs, which are
    then printed. Combine with <option>--uuid</option> to list the IDs in UUID style, i.e. the way GPT
    partition type UUIDs are usually shown.</para>
  </refsect1>

  <refsect1>
    <title>Options</title>

    <para>The following options are understood:</para>

    <variablelist>
      <varlistentry>
        <term><option>-p</option></term>
        <term><option>--pretty</option></term>

        <listitem><para>Generate output as programming language snippets.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-a <replaceable>app-id</replaceable></option></term>
        <term><option>--app-specific=<replaceable>app-id</replaceable></option></term>

        <listitem><para>With this option, an identifier that is the result of hashing the
        application identifier <replaceable>app-id</replaceable> and the machine identifier will be
        printed. The <replaceable>app-id</replaceable> argument must be a valid sd-id128 string
        identifying the application.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-u</option></term>
        <term><option>--uuid</option></term>

        <listitem><para>Generate output as a UUID formatted in the "canonical representation", with five
        groups of digits separated by hyphens. See the
        <ulink url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">wikipedia</ulink>
        for more discussion.</para></listitem>
      </varlistentry>

      <xi:include href="standard-options.xml" xpointer="help" />
      <xi:include href="standard-options.xml" xpointer="version" />
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Exit status</title>

    <para>On success, 0 is returned, a non-zero failure code otherwise.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_id128_get_machine</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
