[0m


LN(1)		    UNIX Programmer's Manual		    LN(1)



[1mNAME
     [0mln - make links

[1mSYNOPSIS
     ln [0m[ [1m-s [0m] [ [1m-i [0m| [1m-f [0m] _s_o_u_r_c_e_n_a_m_e [ _t_a_r_g_e_t_n_a_m_e ]
     [1mln [0m[ [1m-s [0m] [ [1m-i [0m| [1m-f [0m] _s_o_u_r_c_e_n_a_m_e_1 [ _s_o_u_r_c_e_n_a_m_e_2 ... ] _t_a_r_-
     _g_e_t_d_i_r_e_c_t_o_r_y

[1mDESCRIPTION
     [0mA link is a directory entry referring to a file; the same
     file (together with its size, all its protection informa-
     tion, etc.) may have several links to it.	There are two
     kinds of links: hard links and symbolic links.

     By default _l_n makes hard links.  A hard link to a file is
     indistinguishable from the original directory entry; any
     changes to a file are effective independent of the name used
     to reference the file.  Hard links may not span file systems
     and may not refer to directories.

     The [1m-s [0moption causes _l_n to create symbolic links.	A sym-
     bolic link contains the name of the file to which it is
     linked.  The referenced file is used when an _o_p_e_n(2) opera-
     tion is performed on the link and is relative to the direc-
     tory containing the link.	A _s_t_a_t(2) on a symbolic link will
     return the linked-to file; an _l_s_t_a_t(2) must be done to
     obtain information about the link.  The _r_e_a_d_l_i_n_k(2) call may
     be used to read the contents of a symbolic link.  Symbolic
     links may span file systems and may refer to directories or
     even to non-existent files.

     Given one or two arguments, _l_n creates a link to an existing
     file _s_o_u_r_c_e_n_a_m_e.  If _t_a_r_g_e_t_n_a_m_e is given, the link has that
     name; _t_a_r_g_e_t_n_a_m_e may also be a directory in which to place
     the link; otherwise it is placed in the current directory
     (thus _t_a_r_g_e_t_n_a_m_e defaults to ".").  If only the directory is
     specified, the link will be made to the last component of
     _s_o_u_r_c_e_n_a_m_e.

     Given more than two arguments, _l_n makes links in _t_a_r_g_e_t_-
     _d_i_r_e_c_t_o_r_y to all the named source files.  The links made
     will have the same name as the files being linked to.

[1mOPTIONS
     [0mThe following options are supported:

     [1m-s   [0mMake a symbolic link rather than a hard link.

     [1m-f   [0mIf the target link already exists remove it before
	  creating the link.  If this option is not used an error
	  will be reported and the link will not be created.




Printed 29/11/93    Revision 1.3 of 11/10/90			1






LN(1)		    UNIX Programmer's Manual		    LN(1)



     [1m-i   [0mAsk the user before creating each link.  The name of
	  the link is printed on the standard output and the user
	  is prompted for a yes or no.	If the response (read
	  from the standard input) starts with a "y" the link is
	  created, removing the target first if it already
	  exists, otherwise this link is skipped.

     [1m-V   [0mSupport the System V _l_n semantics when the target
	  exists.  If the target is writable or the _t_a_r_g_e_t is a
	  symbolic link which cannot be resolved the command
	  behaves as though the [1m-f [0moption was given - the target
	  is unlinked and (if this succeeds) the link is created.
	  Otherwise (the target is read-only or is a symbolic
	  link referring to a read-only file) the command behaves
	  as though the [1m-i [0moption was given - the user is asked
	  whether the target should be removed.  If the standard
	  input of the command is not a terminal the command
	  behaves as though the [1m-f [0mflag was given.

[1mWARNING
     [0mThe BSD semantics for _l_n allow it to be used to manage sema-
     phores.  To do this _l_n is used to create a link to an exist-
     ing file (or, indeed, a symbolic link with any value).  If
     the link succeeds the shell script which executed it has
     claimed the semaphore.  If the link fails (because the link
     already exists) the semaphore is already held by another
     process.  To release the semaphore the process simply
     removes the link.

     This works because the _l_n command creates a link atomically.
     With the System V semantics this is no longer the case - the
     command will remove an existing link.

[1mSEE ALSO
     [0m_l_n(1v), _r_m(1), _c_p(1), _m_v(1), _l_i_n_k(2), _r_e_a_d_l_i_n_k(2), _s_t_a_t(2),
     _s_y_m_l_i_n_k(2).



















Printed 29/11/93    Revision 1.3 of 11/10/90			2



[0m