ln コマンド

目次

概要

ln - リンクを作成する

コマンドライン

ln [OPTION]... [-T] TARGET LINK_NAME
ln [OPTION]... TARGET
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... -t DIRECTORY TARGET...

対象バージョン

説明

ln コマンドはハードリンク、または、シンボリックリンクを作成します。-s オプションをつけない場合、ハードリンクを作成します。ハードリンクは、ディスク上のファイルの実体に、複数のパス名が割り当てられている状態です。リンク元、リンク先という概念は無く、両方のパス名が同じ実体を参照しています。すべてのパス名が削除された時点で実体も削除されます。ls -l コマンドの第2カラムがリンク数を示します。

$ ln fileA fileB
$ ls -l *
-rw-r--r-- 2 yamada yamada 5 Aug  8 22:45 fileA
-rw-r--r-- 2 yamada yamada 5 Aug  8 22:45 fileB

-s オプションをつけるとシンボリックリンクを作成します。シンボリックリンクの場合、リンク元がファイルの実体を参照し、リンク先はリンク元のパス名を参照します。

$ ln -s fileA fileB
$ ls -l *
-rw-r--r-- 1 yamada yamada 5 Aug  8 22:45 fileA
lrwxrwxrwx 1 yamada yamada 5 Aug  8 22:50 fileB -> fileA

オプション

-s, --symbolic
ハードリンクではなくシンボリックリンクを作成します。
$ ln -s fileA fileB
$ ls -l *
-rw-r--r-- 1 yamada yamada 5 Aug  8 22:24 fileA
lrwxrwxrwx 1 yamada yamada 5 Aug  8 22:26 fileB -> fileA
-r, --relative
-s オプションでシンボリックリンクを作成する際、TARGET が絶対パスであっても相対パスとしてリンク先を作成します。
$ ln -sr /tmp/fileA /tmp/dirA
$ ls -l /tmp/dirA/*
lrwxrwxrwx 1 yamada yamada 8 Aug  8 22:36 fileA -> ../fileA

バックアップ

--backup[=CONTROL]
リンク先ファイルが既に存在する場合、バックアップファイルを作成します。CONTROL には下記のいずれかを指定します。
  • none : バックアップを作成せずエラー終了します。
  • simple : ファイル名の末尾に ~ をつけたシンプルなバックアップを作成します(デフォルト)。
  • numbered : ファイル名の末尾に .~n~ (n=1, 2, 3...)をつけたバックアップを作成します。
  • existing : 番号タイプのバックアップが存在すれば番号タイプ、存在しなければシンプルタイプのバックアップを作成します。
$ touch fileA fileB
$ ln --backup fileA fileB
$ ls -l *
-rw-r--r-- 2 yamada yamada 0 Aug  8 22:37 fileA
-rw-r--r-- 2 yamada yamada 0 Aug  8 22:37 fileB
-rw-r--r-- 1 yamada yamada 0 Aug  8 22:37 fileB~
-b
--backup=simple と同義です。
-S, --suffix=SUFFIX
バックアップを行う際のサフィックスを指定します。
$ ln -b --suffix=.bak fileA fileB

メッセージ表示

-v, --verbose
リンクされたファイル名を表示します。
$ ln -v fileA fileB
'fileB' => 'fileA'
--help
ヘルプを表示して終了します。
--version
バージョン情報を表示して終了します。
-L, --logical
TARGET がシンボリックリンクの場合、シンボリックリンク先ファイルを TARGET とします。
-P, --physical
TARGET がシンボリックリンクの場合、シンボリックリンクファイル自体を TARGET とします。
-n, --no-dereference
LINK_NAME がシンボリックリンクの場合、シンボリックリンクファイル自体を LINK_NAME とします。

上書き制御

-f, --force
リンク先ファイルが既に存在する場合、それを削除してからリンクファイルを作成します。
-i, --interactive
リンク先ファイルが既に存在する場合、確認プロンプトを表示します。
-T, --no-target-directory
リンク先ファイルがディレクトリであっても、ディレクトリではなく通常ファイルとして扱います。
$ ln -T ./fileA ./dirA
ln: failed to create hard link './dirA': File exists

その他

-t, --target-directory=DIRECTORY
リンクを作成するディレクトリを指定します。
$ ln -s -t . ../*.py
-d, -F, --directory
システムが許可していれば、スーパーユーザーに対してディレクトリのハードリンクを作成することを許可します。RHEL や Ubuntu では許可されません。