ln command
ln
- Create hard links by default, symbolic links with --symbolic.
ln
command in linux is used to create links between files or directories. Links allow you to reference the same file from multiple locations. There are two types of links: hard links and soft (symbolic) links.
Usage: ln [OPTION]... [-T] TARGET LINK_NAME
OPTION
: Flags which enhances theln
abilities.TARGET
: file or directory you want to link to.LINK_NAME
: name of the new link.
Examples
-
Creating a hard link
A hard link is a direct reference to the same data on disk as the original file. By default,
ln
creates hard links.$ ln original.txt hardlink.txt
- Creates a hard link named
hardlink.txt
pointing tooriginal.txt
. - Both names point to the same file data and deleting one doesn’t affect the other.
- Hard links share the same inode (inode is a file data identifier).
- They only work within the same filesystem.
- If
original.txt
is deleted,hardlink.txt
still accesses the data.
- Creates a hard link named
-
Creating a symbolic (soft) link
A symbolic link (symlink) is a pointer to the original file’s path, like a shortcut. Use the
-s
(symbolic) option to create a symbolic link.$ ln -s original.txt symlink.txt
- Creates a symbolic link named
symlink.txt
pointing too
riginal.txt`. - If
original.txt
is deleted,symlink.txt
becomes a broken link. - Symlinks can point to files or directories across filesystems.
- They store a path, not the data itself.
- Use
ls -l
to see symlinks (e.g.,symlink.txt -> original.txt
).
- Creates a symbolic link named
-
Linking a directory
Symbolic links are commonly used for directories (hard links to directories are rarely allowed).
$ ln -s /home/user/docs /home/user/docs_shortcut
- Creates a symlink
docs_shortcut
pointing to thedocs
directory.
- Creates a symlink
-
Forcing overwrite
If the link name already exists,
ln
will fail unless you use-f
(force) to overwrite it.$ ln -sf original.txt symlink.txt
- Overwrites an existing
symlink.txt
with a new symbolic link tooriginal.txt
.
- Overwrites an existing
-
Preventing overwrites
Use
-n
(no-dereference) with symlinks to treat an existing symlink as a file, not its target.$ ln -snf newfile.txt symlink.txt
- Replaces
symlink.txt
without affecting its original target.
- Replaces
To get help related to the ln
command use --help
option
$ ln --help
Usage: ln [OPTION]... [-T] TARGET LINK_NAME
or: ln [OPTION]... TARGET
or: ln [OPTION]... TARGET... DIRECTORY
or: ln [OPTION]... -t DIRECTORY TARGET...
In the 1st form, create a link to TARGET with the name LINK_NAME.
In the 2nd form, create a link to TARGET in the current directory.
In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
Create hard links by default, symbolic links with --symbolic.
By default, each destination (name of new link) should not already exist.
When creating hard links, each TARGET must exist. Symbolic links
can hold arbitrary text; if later resolved, a relative link is
interpreted in relation to its parent directory.
Mandatory arguments to long options are mandatory for short options too.
--backup[=CONTROL] make a backup of each existing destination file
-b like --backup but does not accept an argument
-d, -F, --directory allow the superuser to attempt to hard link
directories (note: will probably fail due to
system restrictions, even for the superuser)
-f, --force remove existing destination files
-i, --interactive prompt whether to remove destinations
-L, --logical dereference TARGETs that are symbolic links
-n, --no-dereference treat LINK_NAME as a normal file if
it is a symbolic link to a directory
-P, --physical make hard links directly to symbolic links
-r, --relative create symbolic links relative to link location
-s, --symbolic make symbolic links instead of hard links
-S, --suffix=SUFFIX override the usual backup suffix
-t, --target-directory=DIRECTORY specify the DIRECTORY in which to create
the links
-T, --no-target-directory treat LINK_NAME as a normal file always
-v, --verbose print name of each linked file
--help display this help and exit
--version output version information and exit
The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable. Here are the values:
none, off never make backups (even if --backup is given)
numbered, t make numbered backups
existing, nil numbered if numbered backups exist, simple otherwise
simple, never always make simple backups
Using -s ignores -L and -P. Otherwise, the last option specified controls
behavior when a TARGET is a symbolic link, defaulting to -P.