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

FreeBSD Manual Pages


home | help
ln(1)				 User Commands				 ln(1)

       ln - make hard or symbolic links	to files

       /usr/bin/ln [-fns] source_file [target]

       /usr/bin/ln [-fns] source_file... target

       /usr/xpg4/bin/ln	[-fs] source_file [target]

       /usr/xpg4/bin/ln	[-fs] source_file... target

       In  the first synopsis form, the	ln utility creates a new directory en-
       try (link) for the file specified by source_file,  at  the  destination
       path  specified by target. If target is not specified, the link is made
       in the current directory. This first synopsis form is assumed when  the
       final operand does not name an existing directory; if more than two op-
       erands are specified and	the final is not an existing directory,	an er-
       ror will	result.

       In the second synopsis form, the	ln utility creates a new directory en-
       try for each file specified by a	source_file operand, at	a  destination
       path in the existing directory named by target.

       The  ln	utility	 may  be  used	to create both hard links and symbolic
       links. A	hard link is a pointer to a file and is	indistinguishable from
       the original directory entry. Any changes to a file are effective inde-
       pendent of the name used	to reference the file. Hard links may not span
       file systems and	may not	refer to directories.

       ln  by  default creates hard links. source_file is linked to target. If
       target is a directory, another file named  source_file  is  created  in
       target and linked to the	original source_file.

       If  target  is  an existing file	and the	-f option is not specified, ln
       will write a diagnostic message to standard error, do nothing more with
       the current source_file,	and go on to any remaining source_files.

       A  symbolic  link is an indirect	pointer	to a file; its directory entry
       contains	the name of the	file to	which it is linked. Symbolic links may
       span file systems and may refer to directories.

       File  permissions for target may	be different from those	displayed with
       an -l listing of	the ls(1) command. To display the permissions of  tar-
       get, use	ls -lL.	See stat(2) for	more information.

       If  /usr/bin/ln	determines that	the mode of target forbids writing, it
       prints the mode (see chmod(1)), asks for	 a  response,  and  reads  the
       standard	 input	for one	line. If the response is affirmative, the link
       occurs, if permissible. Otherwise, the command exits.

       When creating a hard link, and the source file  is  itself  a  symbolic
       link, the target	will be	a hard link to the file	referenced by the sym-
       bolic link, not to the symbolic link object itself (source_file).

       The  following  options	are  supported	for   both   /usr/bin/ln   and

       -f	Links  files without questioning the user, even	if the mode of
		target forbids writing.	This is	the default  if	 the  standard
		input is not a terminal.

       -s	Creates	a symbolic link.

		If  the	-s option is used with two arguments, target may be an
		existing directory or a	non-existent file. If  target  already
		exists	 and  is  not  a  directory,  an  error	 is  returned.
		source_file may	be any path name and need not exist. If	it ex-
		ists,  it  may be a file or directory and may reside on	a dif-
		ferent file system from	target.	If target is an	 existing  di-
		rectory,  a  file is created in	directory target whose name is
		source_file or the last	component of source_file. This file is
		a  symbolic  link  that	references source_file.	If target does
		not exist, a file with name target is created and it is	a sym-
		bolic link that	references source_file.

		If  the	-s option is used with more than two arguments,	target
		must be	an existing directory or an error  will	 be  returned.
		For  each  source_file,	a link is created in target whose name
		is the last component of source_file. Each new source_file  is
		a  symbolic  link  to  the original source_file. The files and
		target may reside on different file systems.

       The following option is supported for /usr/bin/ln only:

       -n	If target is an	existing file, writes a	diagnostic message  to
		stderr	and  goes on to	any remaining source_files. The	-f op-
		tion overrides this option. This is the	default	 behavior  for
		/usr/bin/ln and	/usr/xpg4/bin/ln, and is silently ignored.

       The following operands are supported:

       source_file     A  path name of a file to be linked. This can be	either
		       a regular or special file. If the -s option  is	speci-
		       fied, source_file can also be a directory.

       target	       The path	name of	the new	directory entry	to be created,
		       or of an	existing directory in which the	new  directory
		       entries are to be created.

       See largefile(5)	for the	description of the behavior of ln when encoun-
       tering files greater than or equal to 2 Gbyte ( 2**31 bytes).

       See environ(5) for descriptions of the following	environment  variables
       that  affect  the execution of ln: LANG,	LC_ALL,	LC_CTYPE, LC_MESSAGES,
       and NLSPATH.

       The following exit values are returned:

       0	All the	specified files	were linked successfully

       >0	An error occurred.

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Availability		     |SUNWcsu			   |
       |CSI			     |Enabled			   |

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Availability		     |SUNWxcu4			   |
       |CSI			     |Enabled			   |
       |Interface Stability	     |Standard			   |

       chmod(1),  ls(1),  stat(2),  attributes(5),  environ(5),	 largefile(5),

       A  symbolic  link to a directory	behaves	differently than you might ex-
       pect in certain cases. While an ls(1) command on	such a	link  displays
       the files in the	pointed-to directory, entering ls -l displays informa-
       tion about the link itself:

       example%	ln -s dir link
       example%	ls link
       file1 file2 file3 file4
       example%	ls -l link
       lrwxrwxrwx  1 user	     7 Jan 11 23:27 link -> dir

       When you	change to a directory (see cd(1)) through a symbolic link, us-
       ing /usr/bin/sh or /usr/bin/csh,	you wind up in the pointed-to location
       within the file system. This means that the parent of the  new  working
       directory  is not the parent of the symbolic link, but rather, the par-
       ent of the pointed-to directory.	This will also happen  when  using  cd
       with the	-P option from /usr/bin/ksh or /usr/xpg4/bin/sh. For instance,
       in the following	case, the final	working	 directory  is	/usr  and  not

       example%	pwd
       example%	ln -s /usr/tmp symlink
       example%	cd symlink
       example%	cd ..
       example%	pwd

       C  shell	users can avoid	any resulting navigation problems by using the
       pushd and popd built-in commands	instead	of cd.

SunOS 5.10			  25 Mar 2004				 ln(1)


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

home | help