lnコマンドの詳細解説
lnコマンドは、
Unix系オペレーティングシステムにおいて、ファイルやディレクトリに対するリンクを作成するために使用される基本的なコマンドです。このコマンドは、
POSIX(Portable Operating System Interface)およびSingle UNIX Specificationで標準化されており、幅広いシステムで共通の動作が期待できます。lnは「link」の略であり、その名の通り、ファイルシステムにおける異なる場所から同じデータにアクセスするための入り口(リンク)を生成します。
lnコマンドには、主に二種類のリンクを作成する機能があります。
1.
ハードリンク
デフォルトで作成されるリンク形式です。
ハードリンクは、ファイルの実体データ(inode)を直接参照します。
複数の
ハードリンクは、同じデータにアクセスする異なる名前となります。
元のファイル(inode)を削除しても、他の
ハードリンクが残っていればデータにアクセス可能です。
異なるファイルシステム間には作成できません。
ディレクトリへの
ハードリンクは、通常、作成できません。
2.
シンボリックリンク (ソフトリンク)
`-s` オプションを指定することで作成されるリンク形式です。
シンボリックリンクは、ターゲットファイルのパス名を文字列として保存します。
シンボリックリンクは、ターゲットファイルへの参照(ポインタ)であり、ターゲットファイルが削除または移動されるとリンクが切れます。
異なるファイルシステム間にも作成できます。
ディレクトリへのシンボリックリンクも作成できます。
lnコマンドの構文
lnコマンドは、以下のような構文で使用されます。
bash
ln [OPTION]... [-T] TARGET LINK_NAME
ln [OPTION]... TARGET
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... -t DIRECTORY TARGET...
`TARGET`: リンクの対象となるファイルまたはディレクトリ。
`LINK_NAME`: 作成するリンクの名前。`TARGET`が複数の場合、最後の引数はディレクトリ名である必要があります。
`DIRECTORY`: リンクを格納するディレクトリ。`-t`オプションを使用した場合に指定。
主なオプション
lnコマンドには、リンクの動作を制御するための様々なオプションがあります。
`-s` / `--symbolic`: シンボリックリンクを作成します。
`-f` / `--force`: 上書きの確認をせず、強制的にリンクを作成または削除します。既存のリンクを上書きする際に便利です。
`-i` / `--interactive`: 上書き時に確認を求めます。誤操作を防ぐために利用します。
`-L` / `--logical`: シンボリックリンクを辿ってリンクを生成します。シンボリックリンクのリンク先に対して
ハードリンクを作成する場合に使用。
`-P` / `--physical`: シンボリックリンクを辿らずにリンクを作成します。シンボリックリンクそのものにリンクを作成する場合に使用。
`-n` / `--no-dereference`: シンボリックリンクを辿らずにリンクを作成します(シンボリックリンクを辿らない点では`-P`と同じだが、`-L`オプションの挙動を上書きするために使われます。`-L`オプションと同時に使用すると`-L`オプションは無視されます。).
使用例
1.
ハードリンクの作成
bash
ln file.txt hardlink.txt
`file.txt`への
ハードリンク`hardlink.txt`を作成します。
2.
シンボリックリンクの作成
bash
ln -s file.txt symlink.txt
`file.txt`へのシンボリックリンク`symlink.txt`を作成します。
3.
ディレクトリへのシンボリックリンクの作成
bash
ln -s directory dir_symlink
`directory`へのシンボリックリンク`dir_symlink`を作成します。
4.
複数のファイルをディレクトリにリンクする
bash
ln file1.txt file2.txt dest_dir
`file1.txt`と`file2.txt`への
ハードリンクを`dest_dir`ディレクトリに作成します
5.
`-t` オプションで複数のファイルをディレクトリにリンクする
bash
ln -t dest_dir file1.txt file2.txt
`file1.txt`と`file2.txt`への
ハードリンクを`dest_dir`ディレクトリに作成します
外部リンク
ln(1) - Linux JM Project
ln(1) - OpenBSD(英語)
ln(1) - HMUGリファレンスマニュアル(英語)
ln(1) - Debianリファレンスマニュアル(日本語)
lnコマンドは、ファイルシステムの操作において重要な役割を果たします。
ハードリンクとシンボリックリンクを理解し、状況に応じて適切に使い分けることで、より柔軟で効率的なファイル管理が可能になります。