man : ln
File: fileutils.info, Node: ln invocation, Next: mkdir invocation, Up: Special file types
`ln': Make links between files
`ln' makes links between files. By default, it makes hard links;
with the `-s' option, it makes symbolic (or "soft") links. Synopses:
ln [OPTION]... TARGET [LINKNAME]
ln [OPTION]... TARGET... DIRECTORY
* If the last argument names an existing directory, `ln' creates a
link to each TARGET file in that directory, using the TARGETs'
names. (But see the description of the `--no-dereference' option
* If two filenames are given, `ln' creates a link from the second to
* If one TARGET is given, `ln' creates a link to that file in the
* It is an error if the last argument is not a directory and more
than two files are given. Without `-f' or `-i' (see below), `ln'
will not remove an existing file. Use the `--backup' option to
make `ln' rename existing files.
A "hard link" is another name for an existing file; the link and the
original are indistinguishable. Technically speaking, they share the
same inode, and the inode contains all the information about a
file--indeed, it is not incorrect to say that the inode _is_ the file.
On all existing implementations, you cannot make a hard link to a
directory, and hard links cannot cross filesystem boundaries. (These
restrictions are not mandated by POSIX, however.)
"Symbolic links" ("symlinks" for short), on the other hand, are a
special file type (which not all kernels support: System V release 3
(and older) systems lack symlinks) in which the link file actually
refers to a different file, by name. When most operations (opening,
reading, writing, and so on) are passed the symbolic link file, the
kernel automatically "dereferences" the link and operates on the target
of the link. But some operations (e.g., removing) work on the link
file itself, rather than on its target. *Note Symbolic Links:
The program accepts the following options. Also see *Note Common
*Note Backup options::. Make a backup of each file that would
otherwise be overwritten or removed.
Allow the super-user to make hard links to directories.
Remove existing destination files.
Prompt whether to remove existing destination files.
When given an explicit destination that is a symlink to a
directory, treat that destination as if it were a normal file.
When the destination is an actual directory (not a symlink to one),
there is no ambiguity. The link is created in that directory.
But when the specified destination is a symlink to a directory,
there are two ways to treat the user's request. `ln' can treat
the destination just as it would a normal directory and create the
link in it. On the other hand, the destination can be viewed as a
non-directory--as the symlink itself. In that case, `ln' must
delete or backup that symlink before creating the new link. The
default is to treat a destination that is a symlink to a directory
just like a directory.
Make symbolic links instead of hard links. This option merely
produces an error message on systems that do not support symbolic
Append SUFFIX to each backup file made with `-b'. *Note Backup
Specify the destination DIRECTORY. *Note Target directory::.
Print the name of each file before linking it.
Change the type of backups made with `-b'. The METHOD argument
can be `none' (or `off'), `numbered' (or `t'), `existing' (or
`nil'), or `never' (or `simple'). *Note Backup options::.
ln -s /some/name # creates link ./name pointing to /some/name
ln -s /some/name myname # creates link ./myname pointing to /some/name
ln -s a b .. # creates links ../a and ../b pointing to ./a and ./b