ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
ファイル名をディスク上のデータと結び付ける仕組みの一つ。
UNIXでは、ファイルを作成する際、ファイルを構成するブロックが確保される。これをディレクトリエントリという特殊なファイルに記載し、ファイル名と対応付ける操作が行なわれる。狭義には、これを(ハード)リンクという。
新たにファイルを作成せず、既存のファイルを参照する別のディレクトリエントリを作成することで、一つのファイルに異なる名前を付けることも可能となる。一般には、このようにファイル名によってアクセスできるファイルは、一つ以上のハードリンクを持っている。
Windows 2000以降のファイルシステムであるNTFS 5.0でも採用された。しかし、あまり使われていない。なお、FATでも理論上は可能である(後述)。
現在のUNIXでは(広義の)ハードリンクに対応したファイルシステムが採用され、この機能が広く用いられている。
ハードリンクでは、一つのファイルに複数のリンクを付ける事が可能である。
またその各々の名前は互いに平等であり、どれか一つがそのファイルの本当の名前で他は別名、などということはない。
シンボリックリンクの場合は単に別名の情報なので、リンクを削除しても削除されるのはリンクのみであるが、ハードリンクの場合はリンクを削除すると実体も削除される。
一つのファイルに異なる名前を付けると、プログラムの処理で、自分がどの名前で呼び出されたかを判別して動作を変えることができる。
例えば、ファイル圧縮プログラムであるgzipは、gunzipという名前で実行されると圧縮ではなく伸張を行なう。また日本語化されたperlであるjperlは、perlという従来の名前で実行されると日本語拡張機能を初期状態で無効にする。
ディレクトリエントリからのリンクがどのファイルを指すかは、ファイルの持つinode番号(index node番号)という情報で識別される。
これはディスク毎に一意な値であるため、異なるディスクのファイルに対してはハードリンクを行なうことはできない。
MS-DOSなどで使われたFATでも、原理的にはハードリンクが可能である。ただし、MS-DOS自体は対応していない。ディスクの管理領域を、自己責任で書き換えることで実現できる。
既に作られたファイルの実体がディスク中にあるとして、別のディレクトリにそのFAT位置を示したディレクトリエントリを作れば良い。OS自体は対応していないため、全て手動で行なう必要がある。
問題もあり、どこか一箇所からでも削除されると、実体が消えてしまうため、他の場所には実体のないディレクトリエントリだけが残ってしまう。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます