In Unix, what is a hard link?
A hard link is essentially a label or name assigned to a file. Conventionally, we think of a file as consisting of a set of information that has a single name. However, it is possible to create a number of different names that all refer to the same contents. Commands executed upon any of these different names will then operate upon the same file contents.
To make a hard link to an existing file, enter:
ln oldfile newlink
oldfile with the original filename, and
newlink with the additional name you'd like to use to refer to the original file.
This will create a new item in your working directory,
newlink, which is linked to the contents of
oldfile. The new link will show up along with the rest of your filenames when you list them using the
ls command. This new link is not a separate copy of the old file, but rather a different name for exactly the same file contents as the old file. Consequently, any changes you make to
oldfile will be visible in
You can use the standard Unix
rm command to delete a link. After a link has been removed, the file contents will still exist as long as there is one name referencing the file. Thus, if you use the
rm command on a filename, and a separate link exists to the same file contents, you have not really deleted the file; you can still access it through the other link. Consequently, hard links can make it difficult to keep track of files. Furthermore, hard links cannot refer to files located on different computers linked by NFS, nor can they refer to directories. For all of these reasons, you should consider using a symbolic link, also known as a soft link, instead of a hard link.
At Indiana University, for personal or departmental Linux or Unix systems support, see At IU, how do I get support for Linux or Unix?
This is document aibc in the Knowledge Base.
Last modified on 2016-12-06 11:12:09.
- Fill out this form to submit your issue to the UITS Support Center.
- Please note that you must be affiliated with Indiana University to receive support.
- All fields are required.