Read in 3 minutes

last updated 

How to Create Symbolic Links in Linux Using the ln Command

A symbolic link, also know as symlink or soft link, is a special type of file that points to another file or directory.

In this guide, we will cover how to use the ln command to create symbolic links.

There are two types of links in Linux/UNIX systems:

  • Hard links. You can think a hard link as an additional name for an existing file. Hard links are associating two or more file names with the same inode. You can create one or more hard links for a single file. Hard links cannot be created for directories and for a file on a different filesystem or partition.
  • Soft links. Soft link is something like a shortcut in Windows. It is an indirect pointer to a file or directory. Unlike a hard link, a symbolic link can point to a file or a directory on a different filesystem or partition.

ln Command

The ln is an utility for creating links between files. By default, the ln command creates hard links. To create a symbolic links use the -s (--symbolic) option.

The ln command syntax is as follows:

ln [OPTIONS] FILE LINK

To create a symbolic link in Linux, open your terminal and type:

ln -s source_file symbolic_link

Replace source_file with the name of the existing file for which you want to create the symbolic link and symbolic_link with the name of the symbolic link.

The symbolic_link parameter is optional. If you do not specify the symbolic link, the ln command will create a new link in your current directory.

In the following example we are creating a symbolic link named my_link.txt to a file named my_file.txt:

ln -s my_file.txt my_link.txt

To verify that the symlink was created use the ls command:

ls -l my_link.txt

The output will look something like this:

lrwxrwxrwx 1 linuxize users  4 Nov  2 23:03  my_link.txt -> my_file.txt

The l character is a file type flag that represent symbolic link. The -> symbol shows the file the symlink points to.

The command for creating a symbolic link to a directory is same as when creating a symbolic link to a file. Specify the directory name as the firs parameter and the symlink as the second parameter.

For example if you want to create a symbolic link from the /mnt/my_drive/movies directory to the ~/my_movies directory you would run:

ln -s /mnt/my_drive/movies ~/my_movies

If you try to create a symbolic link that already exists, the ln command will print an error message.

ln -s my_file.txt my_link.txt
ln: failed to create symbolic link 'my_link.txt': File exists

To overwrite the destination path of the symlink use the -f (--force) option.

ln -sf my_file.txt my_link.txt

You can delete/remove an existing symbolic link using either the unlink or rm command.

The unlink command syntax is very simple:

unlink symlink_to_remove

Removing symbolic link using the rm command is same as removing file:

rm symlink_to_remove

You should prefer using the unlink utility for removing symbolic link.

If you delete or move the source file to a different location, the symbolic file will be left dangling. You should delete it because it will no longer work.

Conclusion

By now you should have a good understanding of how to use the Linux ln command and how to create symlinks.