LN(1) NetBSD General Commands Manual LN(1)
ln -- link files
ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] source_file [target_file] ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] source_file ... target_dir
The ln utility creates a new directory entry (linked file) for the file name specified by target_file. The target_file will be created with the same file modes as the source_file. It is useful for maintaining multi- ple 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 sym- bolic link. The options are as follows: -F If the target file already exists and is a directory, then remove it so that the link may occur. The -F option should be used with either -f or -i options. If none is specified, -f is implied. The -F option is a no-op unless -s option is specified. -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 -P option. -P When creating a hard link to a symbolic link, create a hard link to the symbolic link itself. This option cancels the -L option. -f If the target file already exists, then unlink it so that the link may occur. (The -f option overrides any previous -i and -w options.) -h If the target_file or target_dir is a symbolic link, do not follow it. This is most useful with the -f option, to replace a symlink which may point to a directory. -i Cause ln to write a prompt to standard error if the target file exists. If the response from the standard input begins with the character `y' or `Y', then unlink the target file so that the link may occur. Otherwise, do not attempt the link. (The -i option overrides any previous -f options.) -n Same as -h, for compatibility with other ln implementations. -s Create a symbolic link. -v Cause ln to be verbose, showing files as they are processed. -w Warn if the source of a symbolic link does not currently exist. By default, ln makes hard links. A hard link to a file is indistinguish- able from the original directory entry; any changes to a file are effec- tively independent of the name used to reference the file. Directories may not be hardlinked, and hard links may not span file systems. 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 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. 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; otherwise it is placed in the current directory. If only the directory is speci- fied, 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.
Create a symbolic link named /home/src and point it to /usr/src: # ln -s /usr/src /home/src Hard link /usr/local/bin/fooprog to file /usr/local/bin/fooprog-1.0: # ln /usr/local/bin/fooprog-1.0 /usr/local/bin/fooprog 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. In the next example, the second call to ln removes the original foo and creates a replacement pointing to baz: # mkdir bar baz # ln -s bar foo # ln -shf baz foo Without the -h option, this would instead leave foo pointing to bar and inside foo create a new symlink baz pointing to itself. This results from directory-walking. An easy rule to remember is that the argument order for ln is the same as for cp(1): The first argument needs to exist, the second one is created.
The -h, -i, -n, -v and -w options are non-standard and their use in scripts is not recommended. They are provided solely for compatibility with other ln implementations. The -F option is a FreeBSD extension and should not be used in portable scripts.
link(2), lstat(2), readlink(2), stat(2), symlink(2), symlink(7)
The ln utility conforms to IEEE Std 1003.2-1992 (``POSIX.2'').
An ln command appeared in Version 1 AT&T UNIX. NetBSD 8.1 April 20, 2017 NetBSD 8.1
You can also request any man page by name and (optionally) by section: