Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
LN(1)                      OpenBSD Reference Manual                      LN(1)

     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

     -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 indistin-
     guishable 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 sys-

     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 read-
     link(2) call may be used to read the contents of a symbolic link.  Sym-
     bolic 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.  Other-
     wise, 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 it-
     self.  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.4                    December 30, 1993                             2


Want to link to this manual page? Use this URL:

home | help