ln - make hard and symbolic links to files
ln [-fhns] source_file [target_file]
ln [-fhns] source_file ... [target_dir]
The ln utility creates a new directory entry (linked file)
which has the
same modes as the original file. It is useful for maintaining multiple
copies of a file in many places at once without using up
storage for the
copies; instead, a link ``points'' to the original copy.
There are two
types of links; hard links and symbolic links. How a link
points to a
file is one of the differences between a hard and symbolic
The options are as follows:
-f Unlink any already existing file, permitting the
link to occur.
-h If the target is a symlink to a directory, do not
-n An alias for -h for compatibility with other operating systems.
-s Create a symbolic link.
By default, ln makes ``hard'' links. A hard link to a file
from the original directory entry; any changes to
a file are
effectively independent of the name used to reference the
links may not normally refer to directories and may not span
A symbolic link contains the name of the file to which it is
referenced file is used when an open(2) operation is performed on the
link. A stat(2) on a symbolic link will return the linkedto file; an
lstat(2) must be done to obtain information about the link.
readlink(2) call may be used to read the contents of a symbolic link.
Symbolic links may span file systems, refer to directories,
and refer to
Given one or two arguments, ln creates a link to an existing
source_file. If target_file is given, the link has that
target_file may also be a directory in which to place the
it is placed in the current directory. If only the
specified, the link will be made to the last component of
Given more than two arguments, ln makes links in target_dir
to all the
named source files. The links made will have the same name
as the files
being linked to.
# ln -s /var/www /home/www
Creates a symbolic link named /home/www and points it to
# ln /usr/local/bin/fooprog-1.0 /usr/local/bin/fooprog
Hard link /usr/local/bin/fooprog to file
As an exercise, try the following commands:
$ ls -i /bin/[
$ ls -i /bin/test
Note that both files have the same inode; that is, /bin/[ is
an alias for the test(1) command. This hard link exists so
be invoked from shell scripts, for example, using the if [ ]
$ mkdir bar baz; ln -s bar foo; ln -shf baz foo
The second call to ln removes the original foo and creates a
pointing to baz. Without the -h option, this would instead
pointing to bar and inside foo create a new symlink baz
pointing to itself.
This results from directory-walking.
link(2), lstat(2), readlink(2), stat(2), symlink(2), symlink(7)
An ln utility appeared in Version 3 AT&T UNIX.
Since the source_file must have its link count incremented,
a hard link
cannot be created to a file which is flagged immutable or
OpenBSD 3.6 December 30, 1993
[ Back ]