# How to Create Soft and Hard Links in Linux

> URL: https://www.atlantic.net/vps-hosting/how-to-create-soft-and-hard-links-in-linux/ | Published: 2021-05-12 | Updated: 2023-11-16 | Author: Hitesh Jethva

A link in a Linux-based operating system points to a file or a directory. Links allow more than one file name to refer to the same file. There are two types of links, Soft Links and Hard Links. In simple terms, a soft link is an actual link to the original file, while a hard link is a mirror copy of the original file.

If you delete the original file. you can not access its contents via its soft link. On the other hand, if you delete the original file you can still access its contents via its hard link. The hard link has the same inode number and file permissions while the soft link has the different inode number and file permissions.

In this post, we will show you how to create a soft and hard link in Linux.

## Create a Soft Link

First, create a directory named softlink with the following command:

```
mkdir softlink
```

Next, create a file named normal_link.txt:

```
cd softlink
echo "This is a softlink" > normal_link.txt
```

Next, create a soft link of the file **normal_link.txt**:

```
ln -s normal_link.txt soft_link.txt
```

Now, check the content of both files:

```
cat normal_link.txt
```

Output:

```
This is a softlink
```

And

```
cat soft_link.txt
```

Output:

```
This is a softlink
```

As you can see, both files have the same content.

Now, check the inode number and permissions of both files:

```
ls -lia
```

You should see that both files have different inode numbers and permission.

```
15866192 drwxrwxr-x  2 vyom vyom 4096 Apr 19 15:10 .
15466497 drwxrwxrwt 13 root root 4096 Apr 19 15:10 ..
15866186 -rw-rw-r--  1 vyom vyom   19 Apr 19 15:09 normal_link.txt
15866189 lrwxrwxrwx  1 vyom vyom   15 Apr 19 15:10 soft_link.txt -> normal_link.txt
```

Now, remove the original file with the following command:

```
rm -rf normal_link.txt
```

Now, check the content of the soft link file:

```
cat soft_link.txt
```

Output:

```
cat: soft_link.txt: No such file or directory
```

As you can see, there is no such file or directory.

If you want to remove the soft link, run the following command:

```
unlink soft_link.txt
```

## Create a Hard Link

First, create a directory named hardlink with the following command:

```
mkdir hardlink
```

Next, create a file named normal_link.txt with the following command:

```
cd hardlink
echo "This is a hard link" > normal_link.txt
```

Next, create a hard link of the file with the following command:

```
ln normal_link.txt hard_link.txt
```

Now, check the content of both files:

```
cat normal_link.txt
```

Output:

```
This is a hard link
```

And

```
cat hard_link.txt
```

Output:

```
This is a hard link
```

Next, check the inode and permission of both files:

```
ls -lia
```

You should see that both files have the same inode and permission:

```
15866186 drwxrwxr-x  2 vyom vyom 4096 Apr 19 15:16 .
15466497 drwxrwxrwt 14 root root 4096 Apr 19 15:16 ..
15866190 -rw-rw-r--  2 vyom vyom   20 Apr 19 15:16 hard_link.txt
15866190 -rw-rw-r--  2 vyom vyom   20 Apr 19 15:16 normal_link.txt
```

Now, try to add some content to the original file:

```
echo "I am adding some content" >> normal_link.txt
```

Now, check the content of the hard link:

```
cat hard_link.txt
```

You should see that the changes we made on the original file are updated in both files.

```
This is a hard link
I am adding some content
```

Now, remove the original file:

```
rm -rf normal_link.txt
```

Now, check the content of the hard link:

```
cat hard_link.txt
```

You should still see the content of the file:

```
This is a hard link
I am adding some content
```

If you want to remove the hard link, run the following command:

```
unlink hard_link.txt
```

## Conclusion

In the above guide, you learned how to create a soft and hard link on Linux. Try creating soft and hard links on your [VPS hosting](https://www.atlantic.net/vps-hosting/) account with Atlantic.Net!
