ln コマンド
ファイル間のリンクを作成します。
概要
ln
コマンドはファイル間のリンクを作成します。ハードリンク(デフォルト)またはシンボリックリンク(-s
オプション使用時)を作成できます。ハードリンクはディスク上のファイルデータを直接指し示しますが、シンボリックリンクは名前で別のファイルを指し示す特殊なファイルです。
オプション
-s, --symbolic
ハードリンクではなくシンボリックリンクを作成します。
$ ln -s 対象ファイル リンク名
$ ls -l リンク名
lrwxrwxrwx 1 user user 10 May 5 10:00 リンク名 -> 対象ファイル
-f, --force
既存の宛先ファイルを削除します。
$ ln -sf 対象ファイル 既存のリンク
-n, --no-dereference
ディレクトリへのシンボリックリンクである宛先を通常のファイルであるかのように扱います。
$ ln -sfn 新しい対象 既存のリンク
-v, --verbose
リンクされた各ファイルの名前を表示します。
$ ln -sv 対象ファイル リンク名
'リンク名' -> '対象ファイル'
-r, --relative
リンクの場所を基準にした相対的なシンボリックリンクを作成します。
$ ln -sr ../対象ファイル リンク名
使用例
ハードリンクの作成
$ echo "オリジナルの内容" > original.txt
$ ln original.txt hardlink.txt
$ ls -l original.txt hardlink.txt
-rw-r--r-- 2 user user 16 May 5 10:00 hardlink.txt
-rw-r--r-- 2 user user 16 May 5 10:00 original.txt
ファイルへのシンボリックリンクの作成
$ ln -s /path/to/file.txt symlink.txt
$ ls -l symlink.txt
lrwxrwxrwx 1 user user 14 May 5 10:00 symlink.txt -> /path/to/file.txt
ディレクトリへのシンボリックリンクの作成
$ ln -s /path/to/directory dir_link
$ ls -l dir_link
lrwxrwxrwx 1 user user 17 May 5 10:00 dir_link -> /path/to/directory
相対的なシンボリックリンクの作成
$ ln -sr ../../shared/config.txt config_link
$ ls -l config_link
lrwxrwxrwx 1 user user 22 May 5 10:00 config_link -> ../../shared/config.txt
ヒント
ハードリンクとシンボリックリンクの違いを理解する
- ハードリンクは元のファイルと同じinodeを共有するため、ディスク上の同じ物理データを指します。どちらのファイルに変更を加えても両方に影響し、すべてのハードリンクが削除されるまでファイルは削除されません。
- シンボリックリンクは名前で別のファイルを指す別個のファイルです。元のファイルが移動または削除されると、シンボリックリンクは壊れます。
ハードリンクの制限
ハードリンクはディレクトリや異なるファイルシステム上のファイルにリンクできません。これらの場合はシンボリックリンクを使用してください。
ファイルがリンクかどうかを確認する
ls -l
を使用して、ファイルがリンクかどうかを確認します。シンボリックリンクは権限の先頭に「l」が表示され、ターゲットを指す矢印が表示されます。
壊れたシンボリックリンクを修正する
シンボリックリンクのターゲットを移動すると、リンクは壊れます。ln -sf
を使用して、新しい場所を指すように更新してください。
よくある質問
Q1. ハードリンクとシンボリックリンクの違いは何ですか?
A. ハードリンクは元のファイルと同じinode(ディスク上のデータ)を共有しますが、シンボリックリンクは名前で別のファイルを指す別個のファイルです。ハードリンクはファイルシステムをまたいだり、ディレクトリにリンクしたりすることはできません。
Q2. ディレクトリへのシンボリックリンクを作成するにはどうすればよいですか?
A. ln -s /path/to/directory リンク名
を使用して、ディレクトリへのシンボリックリンクを作成します。
Q3. 既存のシンボリックリンクを更新するにはどうすればよいですか?
A. ln -sf 新しいターゲット 既存のリンク
を使用して、既存のリンクを置き換える新しいリンクの作成を強制します。
Q4. シンボリックリンクが壊れるのはなぜですか?
A. シンボリックリンクは、ターゲットファイルが移動または削除されると壊れます。それらは実際のファイルデータではなく、パスを指しています。
参考文献
https://www.gnu.org/software/coreutils/manual/html_node/ln-invocation.html
改訂履歴
- 2025/05/05 初版