Create links to (aliases for) files (POSIX)
ln [-f|-i] [-Psv] source_file target_file ln [-f|-i] [-Psv] source_file... target_dir
The ln utility has two syntax forms, as follows:
The destination path for each source_file is the same as its basename (final path component). For example:
ln dir/dir/myfile /existingdircreates /existingdir/myfile as a link to dir/dir/myfile.
This second syntax form is assumed when either the destination names an existing directory, or when more than one source file is specified.
If the destination path exists and you have write permission for the existing destination file, or if -f was specified, ln unlinks the destination, then creates the new link.
If you don't have write permission for an existing directory path, and -f isn't specified, and if the standard input is a tty, ln prompts you for confirmation prior to unlinking the existing file. If standard input isn't a tty, ln writes a diagnostic message to standard error, and goes on to the next source_file without unlinking the destination file.
To create the new link, or replace a file with a link, you need write permissions for the directory in which the new link is going to reside. Note that root always has this permission regardless of the file permission settings.
Hard links are limited to within the same filesystem as the original file and aren't permitted on directories. With symbolic links, however, you can link any pathname to a file. A symbolic link is a special file that has the destination pathname as its data. For more information, see the section on symbolic links in System Architecture.
If the -P option is specified, the link is created within the pathname prefix tree maintained in memory by the QNX Neutrino process manager, procnto. This lets you create new pathname links without the need for a traditional filesystem. If the -s option is specified, a symbolic redirection takes place. If -s isn't specified, a direct link to a named resource manager is made. The resource manager named in the source must be of the form:
Most prefix links are symbolic.
Create a link to /home/curious/monkey called gorilla in the /home/george directory:
ln /home/curious/monkey /home/george/gorilla
Create a symbolic link to the directory /home/fred called /home/barney:
ln -s /home/fred /home/barney
Create a symbolic prefix link to /dev/shmem from /tmp. This simple link maps all temporary files created under the /tmp directory into shared memory objects, thus implementing a RAM disk.
ln -sP /dev/shmem /tmp
Create a symbolic prefix to /dev/ser1 from /dev/modem. Any attempt to open /dev/modem results in an open of /dev/ser1.
ln -sP /dev/ser1 /dev/modem
When creating a symbolic link, ln doesn't check that the source_file named actually exists, or even that it's a valid pathname. If the file doesn't exist or if the source_file isn't a valid pathname, any attempts to use the link fail.
|If a destination path exists, and ln is interrupted before ending, the destination path may be removed before the new link is created.|