How to Create Linux Symlinks for Files and Directories

In Linux, symbolic links, or symlinks, are a powerful tool for file management. They are essential in the file system, facilitating efficient file organization and streamlined workflows.

This article will explain Linux symlinks and provide practical insights into creating and managing these special files. Whether a beginner or a seasoned user, you’ll find valuable tips and symlink examples here. Let’s begin.

Symbolic links are Linux files that point to another file or directory. They serve as shortcuts, providing quick access to the target file without duplication. Unlike a hard link, a symlink contains not the data of the target file but a path to it.

Symlinks provide flexibility and efficiency in file management by pointing to the file’s location, which can be anywhere in the system. This makes symlinks useful for referencing files across directories or file systems.

They are convenient for creating easy access points to frequently used files or directories, eliminating the need to copy or move the original files.

Soft links and hard links both create shortcuts to files in different ways.

A symlink, or soft link, is a pointer to the original file, containing only the path leading to it and allowing for links to files on a different file system.

A symlink has a different inode number, separate from its target. The symlink permissions do not affect access to the target file, as it redirects to the original location.

In contrast, a hard link creates a direct association with the target file’s data. It acts as a mirror, sharing the same inode number, but doesn’t use additional storage space.

Hard links are limited to the same file system as the original file. Any changes to a hard link are reflected in the linked file and vice versa, including file permissions.

Creating links is simple, but having a user-friendly environment is crucial to ensure processes run smoothly, whether on a local machine or a virtual private server (VPS).

If you’re a beginner interested in trying out a VPS, Hostinger’s Linux VPS hosting plans offer an intuitive platform that simplifies the execution of Linux commands. Whether you aim to create a symbolic link for a file or a directory, our plans are suited to perform these tasks efficiently.

The process of creating symlinks in Linux begins with opening your terminal. You then execute the ln command with the -s option. The basic syntax of the command is as follows:

ln -s [source file] [link name]

  • ln – this is the command used to create links.
  • -s – this option specifies that the link is a symbolic link.
  • [source file] – this is the path to the original file you want to link to.
  • [link name] – this is the name of the symlink you are creating.

For example, to create a symbolic link named MyLink that points to myfile.txt, you would use the following Linux command:

ln -s /home/user/Documents/myfile.txt MyLink

This makes a link file in the current directory.

To show symlinks that have been created, use the ls command with the -l option:

ls -l

The command will list symlinks along with the files they point to.

You can access the source file’s content by opening the symbolic link. Any changes to the existing file will be reflected when accessed via the symlink.

To find symlinks that link within a specific directory, employ the find command as follows:

find /path/to/directory -type l

Additionally, options for symbolic links are called command switches. Here are some of the most commonly used ones:

  • -s – creates a symbolic link instead of a hard link.
  • -f (or –force) – forces the creation of the symlink, removing any existing destination file.
  • -i (or –interactive) – prompts a confirmation before overwriting any existing files.
  • -v (or –verbose) – displays detailed information about the symlink creation process, including an error message.
  • -n (or –no-dereference) – treats the target as a regular file if it is a symbolic link to a directory.
  • -b – creates a backup of the target file, if it exists, before creating the new link.
  • -T (or –no-target-directory) – treats the destination as a regular file, even if it is a directory.
  • -r (or –relative) – creates a symbolic link with a relative path to the target.
  • -P (or –physical) – treats the source file as a physical file, even if it’s a symlink.
  • –version – shows the version of the ln command.

Creating a symbolic link for directories is similar to creating one for files, but it focuses on linking folder paths. Here is the symbolic link command format:

ln -s [target directory] [symlink name]

You can use either the absolute path (the entire path from the file system’s root) or the relative path (the path relative to the current directory).

For instance, to create a symlink named MyDirLink that points to the directory /home/user/Documents/MyDir, use:

ln -s /home/user/Documents/MyDir MyDirLink

This command creates a symbolic link in the current directory, directing to MyDir, including its sub-directories.

Managing symlinks in Linux involves simple commands for deletion or modification.

Removing Symlinks

You can use either the rm or unlink command to delete a symlink. While both are effective, unlink is safer for removing single files. The syntax is simple:

rm MyLink


unlink MyLink

These commands delete the symbolic link, not the file it points to.

Changing Symlinks

To change a symlink, you must delete the old link and create a new one, as there’s no direct command to edit a symlink.

For example, if you have a symbolic link MyLink pointing to file1 and want it to direct to file2 instead, delete MyLink and create a new symlink.

Handling Broken Symlinks

A broken link occurs when the file or directory a symlink points to has been deleted or moved. You can manually delete a broken symbolic file using the same unlink or rm command.

Hostinger’s VPS simplifies these tasks with its robust features, including the VPS AI Assistant. This AI-powered tool offers precise and timely guidance for managing all symlinks on your Linux VPS.

Whether you’re dealing with regular maintenance or cleaning up broken links, simply describe the task, and the VPS AI Assistant will provide relevant instructions. All you need to do is copy and paste the commands and run them through your terminal.

Suggested Reading

Learn how to use the AI Assistant with the best AI prompts for VPS management.


Throughout this guide, we’ve explored symbolic links in Linux. Covering their uses, differences, creation, management, and removal, you now have a solid understanding of how to make and maintain symlinks.

Using symbolic links can significantly streamline file management, enhancing efficiency. These skills enable you to manage complex file structures effectively and improve your overall Linux experience.

We hope this guide helps you with symbolic link creation and file system management. If you have any questions, leave them in the comments below.

This section will answer the most common questions about Linux symlinks.

How Do Symlinks Work in Linux?

Symlinks operate through system calls, creating special file types that contain a reference path to another file or directory. Unlike regular files, which include data, symlinks are standard across Linux distributions and other UNIX-like operating systems.

How Do I Symlink a File in Linux?

To create a symlink to a file, use the ln -s command with the original file path and the desired symlink name. For example, ln -s /path/to/original_file linked_file creates a symbolic link named linked_file to original_file.

How to Test a Linux Symlink?

To test a symlink, use the ls -l command, which lists the path to which the symbolic link points. Verify its functionality by accessing the symlink – if it correctly redirects to its target, mainly if it is in a different location, it works as intended.

The author

Ariffud Muhammad

Ariffud is a Technical Content Writer with an educational background in Informatics. He has extensive expertise in Linux and VPS, authoring over 200 articles on server management and web development. Follow him on LinkedIn.