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
link.
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
descend into
it.
-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
is indistinguishable
from the original directory entry; any changes to
a file are
effectively independent of the name used to reference the
file. Hard
links may not normally refer to directories and may not span
file systems.
A symbolic link contains the name of the file to which it is
linked. The
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.
The
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
non-existent files.
Given one or two arguments, ln creates a link to an existing
file
source_file. If target_file is given, the link has that
name;
target_file may also be a directory in which to place the
link. Otherwise,
it is placed in the current directory. If only the
directory is
specified, the link will be made to the last component of
source_file.
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
/var/www.
# ln /usr/local/bin/fooprog-1.0 /usr/local/bin/fooprog
Hard link /usr/local/bin/fooprog to file
/usr/local/bin/fooprog-1.0.
As an exercise, try the following commands:
$ ls -i /bin/[
11553 /bin/[
$ ls -i /bin/test
11553 /bin/test
Note that both files have the same inode; that is, /bin/[ is
essentially
an alias for the test(1) command. This hard link exists so
test(1) may
be invoked from shell scripts, for example, using the if [ ]
construct.
$ mkdir bar baz; ln -s bar foo; ln -shf baz foo
The second call to ln removes the original foo and creates a
replacement
pointing to baz. Without the -h option, this would instead
leave foo
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
append-only
(see chflags(1)).
OpenBSD 3.6 December 30, 1993
[ Back ] |