How to Create and remove a Symbolic Link in Linux ?
Introduction to Symbolic Links in Linux:
In Linux, a symbolic link (often called a symlink or soft link) is a special type of file that points to another file or directory. It acts as a shortcut or reference to the target file, allowing you to access the target from a different location in the filesystem without duplicating the file’s contents.
Creating a symbolic link (symlink) in Linux is a simple process using the ln -s
command. The basic syntax is:
ln -s /path/to/source/file /path/to/destination/file
This will create a symlink at the destination that points to the source file. Below is an example involving Nginx site configurations:
$ ln -s /etc/nginx/sites-available/my.site.conf /etc/nginx/sites-enabled/my.site.conf
Example: Create a Symlink in the /opt
Directory
You can also create symlinks in other directories. For instance, to create a symlink in the /opt
directory:
root@Server:/opt# ln -s /etc/test.conf test.conf
Unlike hard links, symlinks have their own inode number, but they point to the original file’s location. You can verify the symlink using the ls -l
command:
$ ls -l
test.conf -> /etc/test.conf
This output shows that test.conf
is a symlink pointing to /etc/test.conf
.
Handling Existing Symlinks
If you try to create a symlink where the destination file already exists, you will encounter an error stating that the file already exists. To force the creation of a new symlink (overwriting the old one), use the -f
option:
$ ln -sf /etc/new/app/test.conf test.conf
This command will unlink the existing test.conf
and create a new symlink pointing to /etc/new/app/test.conf
.
Remove a Symlink:
There are two common methods to remove symlinks:
- Using rm:
The rm command will remove the symlink but not the original file it points to:
$ rm someconfig.conf
- Using unlink:
The unlink command also removes the symlink, leaving the original file intact:
$ unlink someconfig.conf
Both commands will have the same effect of deleting the symlink, not the file it points to.
Understanding Chains of Symlinks:
A symlink can point to another symlink, creating a chain. For example:
$ ln -s /etc/test.conf /opt/test.conf
$ ln -s /opt/test.conf /var/opt/test.conf
Here, /var/opt/test.conf
is a symlink that points to /opt/test.conf
, which in turn points to /etc/test.conf.
If you remove the last symlink in the chain:
$ unlink /var/opt/test.conf
This will break the link to /opt/test.conf, but the symlink at /opt/test.conf will remain, still pointing to /etc/test.conf.
However, if you delete the /opt/test.conf symlink:
$ unlink /opt/test.conf
The entire chain will be broken, as /var/opt/test.conf will no longer have a valid target.
Conclusion:
Symlinks are useful shortcuts to files or directories with long paths, making complex directory structures more manageable. After reading this guide, you should now be comfortable creating, overwriting, and removing symlinks, as well as understanding how to manage chains of symlinks effectively.