p The options are as follows: l -tag -width flag t Fl F If the target file already exists and is a directory, then remove it so that the link may occur. The .Fl F option should be used with either .Fl f or .Fl i options. If none is specified, .Fl f is implied. The .Fl F option is a no-op unless .Fl s option is specified. t Fl 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 .Fl P option. t Fl P When creating a hard link to a symbolic link, create a hard link to the symbolic link itself. This option cancels the .Fl L option. t Fl f If the target file already exists, then unlink it so that the link may occur. (The .Fl f option overrides any previous .Fl i and .Fl w options.) t Fl h If the .Ar target_file or .Ar target_dir is a symbolic link, do not follow it. This is most useful with the .Fl f option, to replace a symlink which may point to a directory. t Fl i Cause .Nm to write a prompt to standard error if the target file exists. If the response from the standard input begins with the character .Sq Li y or .Sq Li Y , then unlink the target file so that the link may occur. Otherwise, do not attempt the link. (The .Fl i option overrides any previous .Fl f options.) t Fl n Same as .Fl h , for compatibility with other .Nm implementations. t Fl s Create a symbolic link. t Fl v Cause .Nm to be verbose, showing files as they are processed. t Fl w Warn if the source of a symbolic link does not currently exist. .El
p By default, .Nm makes .Em 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.
p A symbolic link contains the name of the file to which it is linked. The referenced file is used when an .Xr open 2 operation is performed on the link. A .Xr stat 2 on a symbolic link will return the linked-to file; an .Xr lstat 2 must be done to obtain information about the link. The .Xr 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.
p Given one or two arguments, .Nm creates a link to an existing file .Ar source_file . If .Ar target_file is given, the link has that name; .Ar 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 .Ar source_file .
p
Given more than two arguments,
.Nm
makes links in
.Ar target_dir
to all the named source files.
The links made will have the same name as the files being linked to.
.Pp
When the utility is called as
.Nm link ,
exactly two arguments must be supplied,
neither of which may specify a directory.
No options may be supplied in this simple mode of operation,
which performs a
.Xr link 2
operation using the two passed arguments.
.Sh EXAMPLES
Create a symbolic link named
p .Dl # ln -s /usr/src /home/src
p Hard link
a /usr/local/bin/fooprog to file
a /usr/local/bin/fooprog-1.0 :
p .Dl # ln /usr/local/bin/fooprog-1.0 /usr/local/bin/fooprog
p As an exercise, try the following commands: d -literal -offset indent # ls -i /bin/[ 11553 /bin/[ # ls -i /bin/test 11553 /bin/test .Ed
p Note that both files have the same inode; that is,
a /bin/[ is essentially an alias for the .Xr test 1 command. This hard link exists so .Xr test 1 may be invoked from shell scripts, for example, using the .Li "if [ ]" construct.
p In the next example, the second call to .Nm removes the original
a foo and creates a replacement pointing to
a baz : d -literal -offset indent # mkdir bar baz # ln -s bar foo # ln -shf baz foo .Ed
p Without the .Fl h option, this would instead leave
a foo pointing to
a bar and inside
a foo create a new symlink
a baz pointing to itself. This results from directory-walking.
p An easy rule to remember is that the argument order for .Nm is the same as for .Xr cp 1 : The first argument needs to exist, the second one is created. .Sh COMPATIBILITY The .Fl h , .Fl i , .Fl n , .Fl v and .Fl w options are non-standard and their use in scripts is not recommended. They are provided solely for compatibility with other .Nm implementations.
p
The
.Fl F
option is a
.Fx
extension and should not be used in portable scripts.
.Sh SEE ALSO
.Xr link 2 ,
.Xr lstat 2 ,
.Xr readlink 2 ,
.Xr stat 2 ,
.Xr symlink 2 ,
.Xr symlink 7
.Sh STANDARDS
The
.Nm
utility conforms to
.St -p1003.2-92 .
.Pp
The simplified
.Nm link
command conforms to
.St -susv2 .
.Sh HISTORY
An
.Nm
command appeared in
.At v1 .