【ln】Linuxでファイルやディレクトリにリンクを作成するコマンド

Linuxのlnコマンドをファイルやディレクトリにリンクを作成することができます。

lnコマンドの使い方

lnコマンドの書式は以下の通りです。

ln [オプション] リンク元 [リンク先]
ln [オプション] リンク元... ディレクトリ

リンク元にはファイルかディレクトリを指定し、リンク先にはリンクの名前を指定します。

オプション

-f 指定したリンクファイルが存在した場合は、既存のリンクを強制的に削除する
-i 指定したリンクファイルが存在した場合は、既存のリンクを削除するか確認を行う
-n リンクファイルを指定した場合、普通のファイルとして扱う
-s ハードリンクではなく、シンボリックリンクを作成する
-v  リンクの作成時にリンクの情報を表示する

リンクを作成する

リンクの種類には、シンボリックリンクとハードリンクがあり、それぞれのリンクの作成方法について説明します。

シンボリックリンクを作成する

シンボリックリンクを作成する場合は、「-s」オプションを指定します。

以下は「foo」というディレクトリに「hoge」というシンボリックリンクを作成する例です。

$ ln -s foo hoge
$ ls -l
drwxr-xr-x 3 root root 102 10 13 14:17 foo
lrwxr-xr-x 1 root root   3 10 13 14:18 hoge -> foo

lsコマンドで「hoge」が「foo」にリンクされていることが確認できます。

ハードリンクを作成する

ハードリンクを作成する場合は、オプションを何もつけずにlnコマンドを実行します。

以下は「bar」というファイルに「piyo」というハードリンクを作成する例です。

$ ln -s bar piyo
$ ls -li
91514520 -rwxrwxrwx 2 root root 15 10 13 15:40 bar
91514520 -rwxrwxrwx 2 root root 15 10 13 15:40 piyo

lsコマンドを「-i」オプションでiノード番号を確認すると、「bar」も「piyo」も同じiノードになっていることがわかります。

シンボリックリンクとハードリンクの違い

シンボリックリンクとハードリンクのそれぞれの特徴は以下の通りです。

シンボリックリンクの特徴

・リンク元のアクセス権限が適用されます。
・ディレクトリに対してリンクを作成することができます。
・別のファイルシステムへリンクを作成することができます。
・リンク元のファイルを削除するとアクセスできなくなります。

ハードリンクの特徴

・リンク元のファイト同じiノード番号を所持します。
・ディレクトリに対してハードリンクを作成することができません。
・別のファイルシステムへのハードリンクは作成できません。
・リンク元のファイルを削除してもアクセスできます。
・ハードリンクを変更すると、リンク元のファイルも更新されます。