LN(1) LN(1)
NAME
ln - make links between files
SYNOPSIS
ln [options] source [dest]
ln [options] source... directory
POSIX options: [-f] [--]
GNU options (shortest form): [-bdfinsvF] [-S backup-suf-
fix] [-V {numbered,existing,simple}] [--help] [--version]
[--]
DESCRIPTION
There are two concepts of `link' in Unix, usually called
hard link and soft link. A hard link is just a name for a
file. (And a file can have several names. It is deleted
from disk only when the last name is removed. The number
of names is given by ls(1). There is no such thing as an
`original' name: all names have the same status. Usually,
but not necessarily, all names of a file are found in the
filesystem that also contains its data.)
A soft link (or symbolic link, or symlink) is an entirely
different animal: it is a small special file that contains
a pathname. Thus, soft links can point at files on dif-
ferent filesystems (possibly NFS mounted from different
machines), and need not point to actually existing files.
When accessed (with the open(2) or stat(2) system calls),
a reference to a symlink is replaced by the operating sys-
tem kernel with a reference to the file named by the path
name. (However, with rm(1) and unlink(2) the link itself
is removed, not the file it points to. There are special
system calls lstat(2) and readlink(2) that read the status
of a symlink and the filename it points to. For various
other system calls there is some uncertainty and variation
between operating systems as to whether the operation acts
on the symlink itself, or on the file pointed to.)
ln makes links between files. By default, it makes hard
links; with the -s option, it makes symbolic (or `soft')
links.
If only one file is given, it links that file into the
current directory, that is, creates a link to that file in
the current directory, with name equal to (the last compo-
nent of) the name of that file. (This is a GNU extension.)
Otherwise, if the last argument names an existing direc-
tory, ln will create links to each mentioned source file
in that directory, with a name equal to (the last compo-
nent of) the name of that source file. (But see the
description of the --no-dereference option below.) Other-
wise, if only two files are given, it creates a link named
dest to the file source. It is an error if the last
GNU fileutils 4.0 November 1998 1
LN(1) LN(1)
argument is not a directory and more than two files are
given.
By default, ln does not remove existing files or existing
symbolic links. (Thus, it can be used for locking pur-
poses: it will succeed only if dest did not exist
already.) But it can be forced to do so with the option
-f.
On existing implementations, if it is at all possible to
make a hard link to a directory, this may be done by the
superuser only. POSIX forbids the system call link(2) and
the utility ln to make hard links to directories (but does
not forbid hard links to cross filesystem boundaries).
POSIX OPTIONS
-f Remove existing destination files.
-- Terminate option list.
GNU OPTIONS
-d, -F, --directory
Allow the super-user to make hard links to directo-
ries.
-f, --force
Remove existing destination files.
-i, --interactive
Prompt whether to remove existing destination
files.
-n, --no-dereference
When given an explicit destination that is a sym-
link 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 speci-
fied 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-direc-
tory - 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 destina-
tion that is a symlink to a directory just like a
directory.
-s, --symbolic
Make symbolic links instead of hard links. This
option merely produces an error message on systems
GNU fileutils 4.0 November 1998 2
LN(1) LN(1)
that do not support symbolic links.
-v, --verbose
Print the name of each file before linking it.
GNU BACKUP OPTIONS
The GNU versions of programs like cp, mv, ln, install and
patch will make a backup of files about to be overwritten,
changed or destroyed if that is desired. That backup files
are desired is indicated by the -b option. How they should
be named is specified by the -V option. In case the name
of the backup file is given by the name of the file
extended by a suffix, this suffix is specified by the -S
option.
-b, --backup
Make backups of files that are about to be over-
written or removed.
-S SUFFIX, --suffix=SUFFIX
Append SUFFIX to each backup file made. If this
option is not specified, the value of the SIM-
PLE_BACKUP_SUFFIX environment variable is used.
And if SIMPLE_BACKUP_SUFFIX is not set, the default
is `~'.
-V METHOD, --version-control=METHOD
Specify how backup files are named. The METHOD
argument can be `numbered' (or `t'), `existing' (or
`nil'), or `never' (or `simple'). If this option
is not specified, the value of the VERSION_CONTROL
environment variable is used. And if VERSION_CON-
TROL is not set, the default backup type is `exist-
ing'.
This option corresponds to the Emacs variable `ver-
sion-control'. The valid METHODs are (unique
abbreviations are accepted):
t, numbered
Always make numbered backups.
nil, existing
Make numbered backups of files that already
have them, simple backups of the others.
never, simple
Always make simple backups.
GNU STANDARD OPTIONS
--help Print a usage message on standard output and exit
successfully.
GNU fileutils 4.0 November 1998 3
LN(1) LN(1)
--version
Print version information on standard output, then
exit successfully.
-- Terminate option list.
ENVIRONMENT
The variables LANG, LC_ALL, LC_CTYPE and LC_MESSAGES have
the usual meaning.
CONFORMING TO
POSIX 1003.2. However, POSIX 1003.2 (1996) does not dis-
cuss soft links. Soft links were introduced by BSD, and
do not occur in System V release 3 (and older) systems.
SEE ALSO
ls(1), rm(1), link(2), lstat(2), open(2), readlink(2),
stat(2), unlink(2)
NOTES
This page describes ln as found in the fileutils-4.0 pack-
age; other versions may differ slightly. Mail corrections
and additions to aeb@cwi.nl. Report bugs in the program
to fileutils-bugs@gnu.ai.mit.edu.
GNU fileutils 4.0 November 1998 4