ln(1) — USER COMMANDS
NAME
ln − link files
SYNOPSIS
ln [−s] [−f] [−n] file1 target
ln [−s] [−f] [−n] file1 [file2 ...] targetdir
DESCRIPTION
The ln command links filen to target by creating a directory entry that refers to target. By using ln with one or more file names, the user may create one or more links to targetdir (if target is a directory).
The ln command may be used to create both hard links and symbolic links; by default it creates 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.
Without the −s option, ln is used to create hard links. filen is linked to target. If target is a directory, another file named filen is created in target and linked to the original filen. If target is a file, its contents are overwritten.
If ln determines that the mode of target forbids writing, it will print the mode [see chmod(2)], ask for a response, and read the standard input for one line. If the line begins with y, the link occurs, if permissible; otherwise, the command exits.
There are three options to ln. If multiple options are specified, the one with the highest priority is used and the remainder are ignored. The options, in descending order of priority, are:
−s ln will create a symbolic link. A symbolic link contains the name of the file to which it is linked. Symbolic links may span file systems and may refer to directories. If the linkname exists, then do not overwrite the contents of the file. A symbolic link’s permissions are always set to read, write, and execute permission for owner, group, and world (777).
−f ln will link files without questioning the user, even if the mode of target forbids writing. Note that this is the default if the standard input is not a terminal.
−n If the linkname is an existing file, do not overwrite the contents of the file. The −f option overrides this option.
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. filen may be any path name and need not exist. If it exists, it may be a file or directory and may reside on a different file system from target. If target is an existing directory, a file is created in directory target whose name is filen or the last component of filen. This file is a symbolic link that references filen. If target does not exist, a file with name target is created and it is a symbolic link that references filen.
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 filen, a file is created in target whose name is filen or its last component; each new filen is a symbolic link to the original filen. The files and target may reside on different file systems.
SEE ALSO
chmod(1), cp(1), mv(1), rm(1), link(2), readlink(2), stat(2), symlink(2)
NOTES
Doing operations that involve ".." (such as "cd ..") in a directory that is symbolically linked will reference the original directory not the target.
The -s option does not use the current working directory. In the command
ln -s path target
path is taken literally without being evaluated against the current working directory.
— Essential Utilities