path for path

Explore and manipulate paths.


> path {flags}

Input/output types:



You must use one of the following subcommands. Using this command as-is will only produce this help message.

There are three ways to represent a path:

  • As a path literal, e.g., '/home/viking/spam.txt'
  • As a structured path: a table with 'parent', 'stem', and 'extension' (and
  • 'prefix' on Windows) columns. This format is produced by the 'path parse' subcommand.
  • As a list of path parts, e.g., '[ / home viking spam.txt ]'. Splitting into parts is done by the path split command.

All subcommands accept all three variants as an input. Furthermore, the 'path join' subcommand can be used to join the structured path or path parts back into the path literal.


path basenameBuiltinGet the final component of a path.
path dirnameBuiltinGet the parent directory of a path.
path existsBuiltinCheck whether a path exists.
path expandBuiltinTry to expand a path to its absolute form.
path joinBuiltinJoin a structured path or a list of path parts.
path parseBuiltinConvert a path into structured data.
path relative-toBuiltinExpress a path as relative to another path.
path splitBuiltinSplit a path into a list based on the system's path separator.
path typeBuiltinGet the type of the object a path refers to (e.g., file, dir, symlink).