A symbolic link, which is sometimes called a symlink or soft link, is a unique file that directs to another file or directory.
This tutorial will explain how to make symbolic links using the ln command.
Linux/UNIX systems have two distinct types of links:
- Hard links are like extra names given to an existing file in Linux/UNIX systems. They enable two or more filenames to be linked with the same inode. It’s possible to create several hard links for one file. However, hard links cannot be made for files located on a separate partition or filesystem, nor for directories.
- Soft links, also called symbolic links, work similarly to shortcuts in Windows. They are an indirect reference to a file or directory. Unlike hard links, symbolic links can point to a file or directory on a separate filesystem or partition.
Using the ln command
ln command is a useful tool for generating links between files in Linux/UNIX systems. By default, the ln command generates hard links. However, if you want to create a symbolic link, you need to use the
To create a symbolic link using
ln, you should follow this syntax:
ln -s [OPTIONS] FILE LINK
- If you provide both the
LINKarguments to the
lncommand, it will create a link that connects the file specified as the first argument (
FILE) to the file indicated as the second argument (
- In case you provide only one file argument or a dot (.) as the second argument to the ln command, it will generate a link in the current working directory that points to that file. The name of the symbolic link will be identical to the name of the file it refers to.
By default, when the ln command executes successfully, it doesn’t display any output, and it returns a value of zero.
Creating a symlink to a file
To create a symbolic link to an existing file, you can follow these steps:
- Open your terminal and type the following command:
ln -s source_file symbolic_link
source_filewith the name of the file you want to create a symbolic link to and
symbolic_linkwith the desired name for your symbolic link. If you don’t specify a symbolic link name, the ln command will generate a link in your current directory.
or example, to create a symbolic link named
my_link.txtto a file called
my_file.txt, you can use the following command:
ln -s my_file.txt my_link.txt
- To check if the symbolic link was created successfully, use the
lscommand with the
ls -l my_link.txt
The output should resemble the following line, indicating that a symbolic link was created:
my_link.txt -> my_file.txt
In the output, the
lcharacter represents a symbolic link, while the arrow (
->) points to the file the symbolic link references.
Creating Symlinks To a Directory
Creating a symbolic link to a directory follows the same syntax as creating a symbolic link to a file. You need to specify the directory name as the first parameter and the symbolic link name as the second parameter.
For instance, to generate a symbolic link from the
/mnt/my_drive/files directory to the
~/my_files directory, you can use this command:
ln -s /mnt/my_drive/files ~/my_files
This command creates a symbolic link named
my_files in your home directory that points to the
If you attempt to create a symbolic link that already exists, the ln command will display an error message indicating that the operation has failed. For example:
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 symbolic link, you can use the -f or –force option. This will replace the existing link with the new link, without prompting for confirmation. For instance:
ln -sf my_file.txt my_link.txt
This command will create a new symbolic link named
my_link.txt that points to the
my_file.txt file, overwriting any existing
my_link.txt link without asking for confirmation.
You can delete or remove symbolic links using either the unlink or rm command. The syntax for unlink is straightforward:
When removing a symbolic link with the rm command, you can follow the same syntax as when removing a regular file:
Note that you should not include a trailing slash
/ at the end of the symbolic link name, regardless of the command you use to remove it.
If you move or delete the original source file, the symbolic link will become broken and should be removed.