canonicalize_file_name - Linux


canonicalize_file_name converts a file path into its canonical form, resolving symlinks, and removing redundant components such as ./ and ../. It provides a consistent and unique representation of a file for various applications.


canonicalize_file_name [options] <file_path> [target_directory]


  • -d, --debug: Print debugging information.
  • -h, --help: Display help information.
  • -p, --print-path: Print the canonicalized file path and exit.
  • -s, --strip-trailing: Remove trailing slashes from the canonicalized path.
  • -t, --target-directory <directory>: Resolve the given path relative to the specified target directory.


  • Canonicalize a file path:
    canonicalize_file_name /path/to/file
  • Resolve a symlink and print the canonical path:
    canonicalize_file_name --print-path /path/to/symlink
  • Remove trailing slashes from the canonical path:
    canonicalize_file_name --strip-trailing /path/to/file/
  • Resolve a file path relative to a target directory:
    canonicalize_file_name --target-directory /target /path/to/file

Common Issues

  • Ensure that the file path exists or is a valid symlink.
  • Specify a target directory if the path is relative and the current working directory is not the intended base.
  • Avoid using multiple symlinks in a path, as it may lead to infinite loops.


  • Use canonicalize_file_name to provide consistent file paths in scripts and applications.
  • Combine with other commands like find or du to perform operations on canonical file paths.

Related Commands

  • realpath: Resolves symlinks in a file path, but does not remove redundant components.
  • dirname: Extracting the directory path from a file path.
  • basename: Extracting the filename from a file path.