NAME
ln —
link files
SYNOPSIS
ln |
[-L | -P |
-s
[-F]]
[-f | -iw]
[-hnv]
source_file
[target_file] |
ln |
[-L | -P |
-s
[-F]]
[-f | -iw]
[-hnv]
source_file ...
target_dir |
DESCRIPTION
The
ln utility creates a new directory entry (linked file) for
the file name specified by
target_file. The
target_file will be created with the same file modes as
the
source_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
- If the target file already exists and is a directory, then
remove it so that the link may occur. The -F option
should be used with either -f or -i
options. If none is specified, -f is implied. The
-F option is a no-op unless -s option
is specified.
-
-
- -L
- When creating a hard link to a symbolic link, create a hard
link to the target of the symbolic link. This is the default. This option
cancels the -P option.
-
-
- -P
- When creating a hard link to a symbolic link, create a hard
link to the symbolic link itself. This option cancels the
-L option.
-
-
- -f
- If the target file already exists, then unlink it so that
the link may occur. (The -f option overrides any
previous -i and -w options.)
-
-
- -h
- If the target_file or
target_dir is a symbolic link, do not follow it.
This is most useful with the -f option, to replace a
symlink which may point to a directory.
-
-
- -i
- Cause ln to write a prompt to standard
error if the target file exists. If the response from the standard input
begins with the character ‘
y
’ or
‘Y
’, then unlink the target file so
that the link may occur. Otherwise, do not attempt the link. (The
-i option overrides any previous -f
options.)
-
-
- -n
- Same as -h, for compatibility with other
ln implementations.
-
-
- -s
- Create a symbolic link.
-
-
- -v
- Cause ln to be verbose, showing files as
they are processed.
-
-
- -w
- Warn if the source of a symbolic link does not currently
exist.
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.
Directories may not be hardlinked, and hard links 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 linked-to 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
and may refer to directories.
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.
EXAMPLES
Create a symbolic link named
/home/src and point it to
/usr/src:
# ln -s /usr/src /home/src
Hard link
/usr/local/bin/fooprog to file
/usr/local/bin/fooprog-1.0:
# ln /usr/local/bin/fooprog-1.0
/usr/local/bin/fooprog
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.
In the next example, the second call to
ln removes the
original
foo and creates a replacement pointing to
baz:
# mkdir bar baz
# ln -s bar foo
# ln -shf baz foo
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.
An easy rule to remember is that the argument order for
ln is
the same as for
cp(1): The first
argument needs to exist, the second one is created.
COMPATIBILITY
The
-h,
-i,
-n,
-v and
-w options are non-standard and
their use in scripts is not recommended. They are provided solely for
compatibility with other
ln implementations.
The
-F option is a
FreeBSD extension
and should not be used in portable scripts.
SEE ALSO
link(2),
lstat(2),
readlink(2),
stat(2),
symlink(2),
symlink(7)
STANDARDS
The
ln utility conforms to
IEEE Std
1003.2-1992 (“POSIX.2”).
HISTORY
An
ln command appeared in
Version 1
AT&T UNIX.