In Unix-like operating systems such as Linux, “everything is a file” and a file is fundamentally a link to an inode (a data structure that stores everything about a file apart from its name and actual content).
A hard link is a file that points to the same underlying inode, as another file. In case you delete one file, it removes one link to the underlying inode. Whereas a symbolic link (also known as soft link) is a link to another filename in the filesystem.
Read Also: How to Perform File and Directory Management
Another important difference between the two types of links is that hard links can only work within the same filesystem while symbolic links can go across different filesystems.
How to Create Hard Links in Linux
To create a hard links in Linux, we will use ln utility. For example, the following command creates a hard link named tp
to the file topprocs.sh
.
$ ls -l $ ln topprocs.sh tp $ ls -l
Looking at the output above, using ls command, the new file is not indicated as a link, it is shown as a regular file. This implies that tp
is just another regular executable file that points to the same underlying inode as topprocs.sh
.
To make a hard link directly into a soft link, use the -P
flag like this.
$ ln -P topprocs.sh tp
How to Create Symbolic Links in Linux
To create a symbolic links in Linux, we will use same ln utility with -s
switch. For example, the following command creates a symbolic link named topps.sh
to the file topprocs.sh
.
$ ln -s ~/bin/topprocs.sh topps.sh $ ls -l topps.sh
From the above output, you can see from the file permissions section that topps.sh
is a link indicated by l:
meaning it is a link to another filename.
If the symbolic link already exist, you may get an error, to force the operation (remove exiting symbolic link), use the -f
option.
$ ln -s ~/bin/topprocs.sh topps.sh $ ln -sf ~/bin/topprocs.sh topps.sh
To enable verbose mode, add the -v
flag to prints the name of each linked file in the output.
$ ln -sfv ~/bin/topprocs.sh topps.sh $ $ls -l topps.sh
That’s It! Do check out these following related articles.
- fdupes – A Command Line Tool to Find and Delete Duplicate Files in Linux
- 5 Useful Commands to Manage File Types and System Time in Linux
In this article, we’ve learned how to create hard and symbolic links in Linux. You can ask any question(s) or share your thoughts about this guide via the feedback form below.
Great tutorial, Thanks!
@Shaker
We are grateful for the feedback.