UNIX では、ファイルに対してリンクを作成することができます。 これは、Windows のショートカットや Macintosh のエイリアスのようなもので、1つのファイルに対して複数のリンクを設定することができます。 リンク自体にはそのファイルの情報は記録されておらず、ファイルの設置場所の情報が記録されています。 リンクを実行することで、リンク先のファイルを呼び出すことができます。 リンクには、 ハードリンク と シンボリックリンク の2種類があり、それぞれリンクの性質が違います。 ハードリンク ハードリンクはファイルに複数の名前を割り当てる機能です。 複数のハードリンクがある場合、ファイルに対してはどのリンクも同じ扱いになります。 また、全てのハードリンクが削除されるまでファイルの本体は削除されません。 注意点としては、異なるファイルシステムやディレクトリに対してはハードリンクを作成することができません。 DirB のファイルを削除─────→ ハードリンクでは直接ファイル本体にリンクされています。 そのため同じファイルが2つあるように扱われます。 全てのリンクを削除するまで、ファイルは完全には削除されません。 シンボリックリンク シンボリックリンクは、ハードリンクと違って、ファイルの本体の位置情報を保管しているファイルで、ファイルの本体とは完全に区別されています。 シンボリックリンクは、ファイルだけでなくディレクトリに対しても作成することができます。 また、ハードリンクのような制限がなく、異なるファイルシステムをまたぐリンクも作成することが可能です。 ただし、シンボリックリンクは、ファイル本体とはまったく別ファイルのため、シンボリックリンクを残したままファイル本体を削除できてしまいます。 このため、本体が削除されたシンボリックリンクにアクセスするとエラーとなってしまいます。 ハードリンクは 「ls コマンド」 でリンク情報を確認することができますが、シンボリックリンクは確認することができないため、 自分でリンクを管理しておく必要があります。
リンクを作成する場合には 「ln コマンド」 を使用します。 [ 書式 ] ln (-s) リンク元ファイル リンク先 ▼ ハードリンクの作成 % ls -l ←── 現在のファイルを確認する total 1 -rw-r--r-- 1 yamada 102 Nov 24 21:22 sample.txt % % ln sample.txt sample.lnk % ls -l total 1 -rw-r--r-- 2 yamada 102 Nov 24 21:22 sample.txt -rw-r--r-- 2 yamada 102 Nov 24 21:22 sample.lnk ↑ リンクカウントが1ではないので、リンクされていることがわかる ▼ シンボリックリンクの作成 % ln sample.txt sample.lnk % ls -l total 1 -rw-r--r-- 1 yamada 102 Nov 24 21:22 sample.txt lrwxrwxrwx 1 yamada 15 Nov 24 21:35 sample.lnk -> sample.txt ↑ リンクカウントは1のままになっている