ln

Make links between files, by default, it makes hard links; with the `-s' option, it makes symbolic (or "soft") links.

Syntax
      ln [Options]... target [Linkname]

      ln [Options]... target... Directory

Options
  -b
  --backup
       Make a backup of each file that would otherwise be overwritten or
       removed.  *Note Backup options::.

  -d
  -F
  --directory
       Allow the super-user to make hard links to directories.

  -f
  --force
       Remove existing destination files.

  -i
  --interactive
       Prompt whether to remove existing destination files.

  -n
  --no-dereference
       When given an explicit destination that is a symlink to a
       directory, treat that destination as if it were a normal file.

       When the destination is an actual directory (not a symlink to one),
       there is no ambiguity.  The link is created in that directory.
       But when the specified destination is a symlink to a directory,
       there are two ways to treat the user's request.  `ln' can treat
       the destination just as it would a normal directory and create the
       link in it.  On the other hand, the destination can be viewed as a
       non-directory--as the symlink itself.  In that case, `ln' must
       delete or backup that symlink before creating the new link.  The
       default is to treat a destination that is a symlink to a directory
       just like a directory.

  -s
  --symbolic
       Make symbolic links instead of hard links.  This option merely
       produces an error message on systems that do not support symbolic
       links.

  -S SUFFIX
  --suffix=SUFFIX
       Append SUFFIX to each backup file made with `-b'.  *Note Backup
       options::.

  -v
  --verbose
       Print the name of each file before linking it.

  -V METHOD
  --version-control=METHOD
       Change the type of backups made with `-b'.  The METHOD argument
       can be `numbered' (or `t'), `existing' (or `nil'), or `never' (or
       `simple').

* If the last argument names an existing directory, `ln' creates a link to each TARGET file in that directory, using the TARGETs'
names. (But see the description of the `--no-dereference' option below.)

* If two filenames are given, `ln' creates a link from the second to the first.

* If one TARGET is given, `ln' creates a link to that file in the current directory.

* It is an error if the last argument is not a directory and more than two files are given. Without `-f' or `-i' (see below), `ln' will not remove an existing file. Use the `--backup' option to make `ln' rename existing files.

A "hard link" is another name for an existing file; the link and the original are indistinguishable. Technically speaking, they share the same inode, and the inode contains all the information about a file--indeed, it is not incorrect to say that the inode _is_ the file.
On all existing implementations, you cannot make a hard link to a directory, and hard links cannot cross filesystem boundaries. (These restrictions are not mandated by POSIX, however.)

"Symbolic links" ("symlinks" for short), on the other hand, are a special file type (which not all kernels support: System V release 3 (and older) systems lack symlinks) in which the link file actually refers to a different file, by name. When most operations (opening, reading, writing, and so on) are passed the symbolic link file, the kernel automatically "dereferences" the link and operates on the target of the link. But some operations (e.g., removing) work on the link file itself, rather than on its target.

Examples

$ ln file1.txt link1
$ rm file1.txt          #The file cannot be deleted until the link is removed.
 
$ ln -s /some/name            # create a link ./name pointing to /some/name
$ ln -s /some/name mylink2    # or give the link a name

$ ln -s /home/simon/demo /home/jules/mylink3   #Create mylink3 pointing to demo

$ ln -s item1 item2 ..        # creates links ../item1 and ../item2 pointing to ./item1 and ./item2

If you delete a file for which a symbolic link still exists, the rm will succeed but the symbolic link would remain and any attempt to reference it will return a 'file not found' error.

"Arithmetic is being able to count up to twenty without taking off your shoes." - Mickey Mouse

Related:

pathchk - Check file name portability
symlink - Make a new name for a file
Equivalent Windows commands: SHORTCUT - Create a windows shortcut (.LNK file)



Back to the Top

© Copyright SS64.com 1999-2010
Some rights reserved