---
name: "ln"
section: "1"
platform: "linux"
package: "coreutils"
version: "9.12-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/ln"
---

# ln(1)

make links between files

## NAME

ln - make links between files

## SYNOPSIS

**ln** \[*OPTION*\]... \[*-T*\] *TARGET LINK\_NAME*\
 **ln** \[*OPTION*\]... *TARGET*\
 **ln** \[*OPTION*\]... *TARGET*... *DIRECTORY*\
 **ln** \[*OPTION*\]... *-t DIRECTORY TARGET*...

## DESCRIPTION

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, if supported by the system

- **-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**

  with **-s**, create 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**.

## AUTHOR

Written by Mike Parker and David MacKenzie.

## REPORTING BUGS

Report bugs to: \<bug-coreutils@gnu.org\>.\
 Report any translation bugs to: \<https://translationproject.org/team/\>.\
 GNU coreutils home page: \<https://www.gnu.org/software/coreutils/\>\
 General help using GNU software: \<https://www.gnu.org/gethelp/\>

## COPYRIGHT

Copyright © 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later \<https://gnu.org/licenses/gpl.html\>.\
 This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

## SEE ALSO

[**link**(2)](/link/2.md), [**symlink**(2)](/symlink/2.md)

Full documentation \<https://www.gnu.org/software/coreutils/ln\>\
 or available locally via: info '(coreutils) ln invocation'
