ln コマンド
目次
概要
ln - リンクを作成するコマンドライン
ln [OPTION]... [-T] TARGET LINK_NAME ln [OPTION]... TARGET ln [OPTION]... TARGET... DIRECTORY ln [OPTION]... -t DIRECTORY TARGET...
対象バージョン
- RHEL 10 : GNU ln 9.5
- Ubuntu 24.04 : GNU ln 9.4
説明
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 では許可されません。
Copyright (C) 2025 杜甫々
初版:2025年8月10日 最終更新:2025年8月10日
https://www.tohoho-web.com/linux/cmd/ln.html