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
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
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?
Last modified on May 13, 2009.