Previous: mktemp invocation, Up: File name manipulation


18.5 realpath: Print the resolved file name.

realpath expands all symbolic links and resolves references to ‘/./’, ‘/../’ and extra ‘/’ characters. By default, all but the last component of the specified files must exist. Synopsis:

     realpath [option]... file...

The program accepts the following options. Also see Common options.

-e
--canonicalize-existing
Ensure that all components of the specified file names exist. If any component is missing or unavailable, realpath will output a diagnostic unless the -q option is specified, and exit with a nonzero exit code. A trailing slash requires that the name resolve to a directory.
-m
--canonicalize-missing
If any component of a specified file name is missing or unavailable, treat it as a directory.
-L
--logical
Symbolic links are resolved in the specified file names, but they are resolved after any subsequent ‘..’ components are processed.
-P
--physical
Symbolic links are resolved in the specified file names, and they are resolved before any subsequent ‘..’ components are processed. This is the default mode of operation.
-q
--quiet
Suppress diagnostic messages for specified file names.
-s
--strip
--no-symlinks
Do not resolve symbolic links. Only resolve references to ‘/./’, ‘/../’ and remove extra ‘/’ characters. When combined with the -m option, realpath operates only on the file name, and does not touch any actual file.
-z
--zero
Separate output items with nul characters.
--relative-to=file
Print the resolved file names relative to the specified file. Note this option honors the -m and -e options pertaining to file existence.
--relative-base=base
This option is valid when used with --relative-to, and will restrict the output of --relative-to so that relative names are output, only when files are descendants of base. Otherwise output the absolute file name. If --relative-to was not specified, then the descendants of base are printed relative to base. If --relative-to is specified, then that directory must be a descendant of base for this option to have an effect. Note: this option honors the -m and -e options pertaining to file existence. For example:
          realpath --relative-to=/usr /tmp /usr/bin
          ⇒ ../tmp
          ⇒ bin
          realpath --relative-base=/usr /tmp /usr/bin
          ⇒ /tmp
          ⇒ bin

Exit status:

     0 if all file names were printed without issue.
     1 otherwise.