GNU Core Utilities/ln
表示
ln コマンドは、ファイルやディレクトリの ハードリンク または シンボリックリンク を作成するためのコマンドです。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションの違いがあります。
基本的な使い方
[編集]ln [オプション] 元ファイル リンク先
ln [オプション] 元ファイル... ターゲットディレクトリ
ハードリンクとシンボリックリンクの違い
[編集]ハードリンクとシンボリックリンクの違い 種類 説明 ハードリンク 元ファイルと同じ inode を持つ別のファイルエントリ。元ファイルが削除されてもデータは保持される。 シンボリックリンク 元ファイルのパスを参照するだけの別のエントリ。元ファイルが削除されるとリンクが壊れる。
主なオプション(GNU coreutils版)
[編集]主なオプション オプション 説明 -s, --symbolicシンボリックリンクを作成 -f, --force既存のリンク先を強制的に上書き -i, --interactive上書き時に確認 -n, --no-dereferenceシンボリックリンクを上書きするとき、リンク自体を対象にする -v, --verboseリンク作成の詳細を表示 -T, --no-target-directoryターゲットがディレクトリであっても、通常のファイルとして扱う -P, --physicalシンボリックリンクをたどらずに操作 -L, --logicalシンボリックリンクをたどる
例
[編集]ハードリンクの作成
[編集]ln file.txt link.txt
file.txt のハードリンク link.txt を作成。
ls -i を実行すると同じ inode を持つことが確認できる。
ls -i file.txt link.txt
シンボリックリンクの作成
[編集]ln -s file.txt symlink.txt
file.txt へのシンボリックリンク symlink.txt を作成。
ls -l で symlink.txt -> file.txt という出力が確認できる。
ディレクトリのシンボリックリンクを作成
[編集]ln -s /usr/local/bin mybin
mybin が /usr/local/bin へのシンボリックリンクになる。
強制的に上書きしてシンボリックリンクを作成
[編集]ln -sf file1.txt symlink.txt
symlink.txt がすでに存在している場合でも強制的に file1.txt へのリンクを作成。
詳細を表示しながらシンボリックリンクを作成
[編集]ln -sv file.txt symlink.txt
- 出力例
'symlink.txt' -> 'file.txt'
複数のファイルをまとめてリンク
[編集]ln file1.txt file2.txt file3.txt target_dir/
file1.txt, file2.txt, file3.txt のハードリンクが target_dir/ 内に作成される。
FreeBSD 版との違い
[編集]FreeBSD 版 ln も基本的な動作は同じですが、一部オプションが異なります。
- GNU 版の
-T(--no-target-directory) が FreeBSD にはない- FreeBSD では
ln target fileを指定すれば同じ動作をする。
- FreeBSD では
-n(--no-dereference) の挙動が異なる- FreeBSD の
-nはシンボリックリンクを削除して新しく作り直す挙動をしない。
- FreeBSD の
- GNU 版を FreeBSD で使う方法
coreutilsをインストールするとglnという名前で GNU 版lnが使える。
pkg install coreutils gln -s file.txt symlink.txt
ハードリンクとシンボリックリンクの使い分け
[編集]状況 推奨リンク ファイルのバックアップを取りたい ハードリンク 別の場所から同じファイルを参照したい ハードリンク ディレクトリのリンクを作成したい シンボリックリンク 別のファイルシステムをまたいでリンクしたい シンボリックリンク
ln はファイルシステムの管理で非常に便利なコマンドなので、適切に使い分けるとよいでしょう。
詳しくは man ln を確認してください。