readlink Command: Tutorial & Examples
Resolving symbolic links
readlink command is a utility in Linux used to resolve symbolic links. In other words, it
outputs the absolute path of a file or a directory. It is part of the GNU Coreutils package which is installed on almost
all Linux systems.
Understanding this command is crucial because symbolic links are common in Linux. They are used to create shortcuts or
references to files and directories. However, it can sometimes be difficult to track where these links are pointing to,
especially when a link points to another link. This is where the
readlink command comes into play.
Understanding the readlink command
The basic syntax of
readlink command is simple:
readlink [option]... [file]...
The command resolves the value of a symbolic link and prints it to the standard output. It's typically used in scripts where you need to know the actual file or directory a symbolic link points to.
Common readlink command options
Here are some of the commonly used
readlink command options:
-f: This option prints the canonical name by following every symlink in every component of the given name recursively. This is most resilient to partial or broken symlinks.
-e: This option ensures a similar behavior to
-f, but it only prints an output if the file or directory exists.
-m: This option also prints the canonical name, but it does not require the file or directory to exist.
Examples of using the readlink command
Let's look at a few examples of using the
Display the value of a symbolic link:
ln -s /etc/hosts test readlink test
testis a symbolic link to the
readlinkcommand will output
-foption to resolve a chain of symbolic links:
ln -s /etc/hosts test1 ln -s test1 test2 readlink -f test2
test2is a symbolic link to
test1, which is a symbolic link to
readlink -fcommand will output
-eoption to ensure the file exists:
ln -s /etc/non_existent_file test readlink -e test
testis a symbolic link to a non-existing
readlink -ecommand will not output anything because the file does not exist.
Troubleshooting with readlink
readlink command is a powerful tool for troubleshooting and identifying issues related to symbolic links. It can
be used to identify broken symbolic links that point to non-existing files or
directories. It can also help in identifying loops in symbolic links where a link points to itself directly or
indirectly, causing a circular reference.
For instance, you can use the
-e option to identify broken symbolic links, as the command will not return anything for
a broken link. This can be very useful in scripts to ensure that a symbolic link is valid before performing operations
on the file or directory it points to.
Understanding and using the
readlink command effectively can make managing and troubleshooting symbolic links much
easier on your Linux system. Whether you're a system administrator managing a complex system with numerous links, or a
developer working in a codebase with linked directories, mastering
readlink can be a valuable addition to your Linux