Original author(s) | AT&T Bell Laboratories |
---|---|
Developer(s) | Various open-source and commercial developers |
Initial release | November 3, 1971 |
Operating system | Unix, Unix-like, IBM i |
Platform | Cross-platform |
Type | Command |
License | coreutils: GPLv3+ |
The ln
command is a standard
Unix command utility used to create a
hard link or a
symbolic link (symlink) to an existing file or directory.
[1] The use of a hard link allows multiple
filenames to be associated with the same
file since a hard link points to the
inode of a given file, the data of which is stored on
disk. On the other hand, symbolic links are special files that refer to other files by
name.
[2]
The ln
command by default creates hard links, and when called with the
command line
parameter ln -s
creates symbolic links.
[3] Most
operating systems prevent hard links to
directories from being created since such a capability could disrupt the structure of a
file system and interfere with the operation of other utilities.
[4] The ln
command can however be used to create symbolic links to non-existent files.
[2]
ln
appeared in Issue 2 of the
X/Open Portability Guidelines.
[5] The version of ln
bundled in
GNU
coreutils was written by Mike Parker and David MacKenzie.
[6]
The command is available as a separate package for
Microsoft Windows as part of the
UnxUtils collection of
native
Win32
ports of common GNU Unix-like utilities.
[7] The ln command has also been ported to the
IBM i operating system.
[8]
Links allow more than one filename to refer to the same file as in the case of a
hard link or act as
pointers to a filename as in the case of a
soft link. Both hard links and soft links can be created by the ln
command. Specifically,
readlink
command line utility.
[12] The symbolic link may contain an arbitrary string which does not refer to the location of an existing file. Such a symbolic link will fail until a file is created at the location which is contained by the symbolic link. By contrast, a symbolic link to an existing file will fail if the existing file is moved to a different location (or renamed).
[9]The ln
utility on systems compliant with the
Single Unix Specification is specified in the Shell and Utilities (XCU) document, which forms a part of the Single Unix Specification.
[13] A mostly identical document is part of
POSIX.
[5]
The specification describes two ways of invoking the ln
utility. Specifically,
ln
utility creates a new hard link (directory entry) for the source file specified by the source_file
operand at the destination path specified by the target_file
operand. However, if the -s
option is specified, a symbolic link is created.ln -fs -L|-P source_file target_file
ln
utility creates a new hard link (
directory entry), or if the -s
option is specified, a symbolic link, for each file specified by the source_file
operand, at a destination path in an existing directory named by operand target_dir
.ln -fs -L|-P source_file_1 source_file_2 ... target_dir
The specification also specifies the command line options that must be supported:
-f
Force existing destination pathnames to be removed to allow the link.-L
For each source_file
operand that names a file that is a symbolic link, create a hard link to the file referenced by the symbolic link.-P
For each source_file
operand that names a file that is a symbolic link, create a (hard) link to the symbolic link itself.-s
Create symbolic links instead of hard links. If the -s option is specified, the -L and -P options are silently ignored.-L
and -P
is specified the last option specified determines the behavior of the utility.-s
option is not specified and neither a -L
nor a -P
option is specified, the implementation defines which of the -L
and -P
options will be used as the default.If neither target file nor target directory are specified, links will be created in the current working directory.
Original author(s) | AT&T Bell Laboratories |
---|---|
Developer(s) | Various open-source and commercial developers |
Initial release | November 3, 1971 |
Operating system | Unix, Unix-like, IBM i |
Platform | Cross-platform |
Type | Command |
License | coreutils: GPLv3+ |
The ln
command is a standard
Unix command utility used to create a
hard link or a
symbolic link (symlink) to an existing file or directory.
[1] The use of a hard link allows multiple
filenames to be associated with the same
file since a hard link points to the
inode of a given file, the data of which is stored on
disk. On the other hand, symbolic links are special files that refer to other files by
name.
[2]
The ln
command by default creates hard links, and when called with the
command line
parameter ln -s
creates symbolic links.
[3] Most
operating systems prevent hard links to
directories from being created since such a capability could disrupt the structure of a
file system and interfere with the operation of other utilities.
[4] The ln
command can however be used to create symbolic links to non-existent files.
[2]
ln
appeared in Issue 2 of the
X/Open Portability Guidelines.
[5] The version of ln
bundled in
GNU
coreutils was written by Mike Parker and David MacKenzie.
[6]
The command is available as a separate package for
Microsoft Windows as part of the
UnxUtils collection of
native
Win32
ports of common GNU Unix-like utilities.
[7] The ln command has also been ported to the
IBM i operating system.
[8]
Links allow more than one filename to refer to the same file as in the case of a
hard link or act as
pointers to a filename as in the case of a
soft link. Both hard links and soft links can be created by the ln
command. Specifically,
readlink
command line utility.
[12] The symbolic link may contain an arbitrary string which does not refer to the location of an existing file. Such a symbolic link will fail until a file is created at the location which is contained by the symbolic link. By contrast, a symbolic link to an existing file will fail if the existing file is moved to a different location (or renamed).
[9]The ln
utility on systems compliant with the
Single Unix Specification is specified in the Shell and Utilities (XCU) document, which forms a part of the Single Unix Specification.
[13] A mostly identical document is part of
POSIX.
[5]
The specification describes two ways of invoking the ln
utility. Specifically,
ln
utility creates a new hard link (directory entry) for the source file specified by the source_file
operand at the destination path specified by the target_file
operand. However, if the -s
option is specified, a symbolic link is created.ln -fs -L|-P source_file target_file
ln
utility creates a new hard link (
directory entry), or if the -s
option is specified, a symbolic link, for each file specified by the source_file
operand, at a destination path in an existing directory named by operand target_dir
.ln -fs -L|-P source_file_1 source_file_2 ... target_dir
The specification also specifies the command line options that must be supported:
-f
Force existing destination pathnames to be removed to allow the link.-L
For each source_file
operand that names a file that is a symbolic link, create a hard link to the file referenced by the symbolic link.-P
For each source_file
operand that names a file that is a symbolic link, create a (hard) link to the symbolic link itself.-s
Create symbolic links instead of hard links. If the -s option is specified, the -L and -P options are silently ignored.-L
and -P
is specified the last option specified determines the behavior of the utility.-s
option is not specified and neither a -L
nor a -P
option is specified, the implementation defines which of the -L
and -P
options will be used as the default.If neither target file nor target directory are specified, links will be created in the current working directory.