Name

ln [options] source target — coreutils

Synopsis

/bin stdin stdout - file -- opt --help --version

A link is a reference to another file, created by the ln command. There are two kinds of links. A symbolic link refers to another file by its path, much like a Windows “shortcut” or a Macintosh “alias.”

$ ln -s myfile softlink

If you delete the original file, the now-dangling link will be invalid, pointing to a nonexistent file path. A hard link, on the other hand, is simply a second name for a physical file on disk (in tech talk, it points to the same inode). Deleting the original file does not invalidate the link.

$ ln myfile hardlink

Symbolic links can cross disk partitions, since they are just references to file paths; hard links cannot, since an inode on one disk has no meaning on another. Symbolic links can also point to directories, whereas hard links cannot… unless you are the superuser and use the -d option.

Useful options

-s

Make a symbolic link. The default is a hard link.

-i

Interactive mode. Ask before overwriting destination files.

-f

Force the link. If a destination file exists, overwrite it unconditionally.

-d

Allow the superuser to create a hard link to a directory.

It’s easy find out where a symbolic link points with either of these commands:

$ readlink linkname
$ ls -l linkname

Get Linux Pocket Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.