lnコマンド(エルエヌ)とは | 意味や読み方など丁寧でわかりやすい用語解説

lnコマンド(エルエヌ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

リンクコマンド (リンクコマンド)

英語表記

ln (エルエヌ)

用語解説

lnコマンドは、LinuxやUNIX系のオペレーティングシステムにおいて、ファイルやディレクトリへのリンクを作成するためのコマンドである。リンクとは、既存のファイルやディレクトリに別の名前を与えてアクセスできるようにする仕組みであり、Windowsにおけるショートカットに似た機能を提供する。しかし、Linuxのリンクはより強力で、ハードリンクとシンボリックリンクという性質の異なる二つの種類が存在する。lnコマンドは、これらのリンクを適切に使い分けることで、ファイル管理の柔軟性を大幅に向上させる重要なツールである。

まず、リンクの仕組みを理解するには、ファイルシステムがファイルをどのように管理しているかを知る必要がある。ファイルシステム上では、ファイルの実体であるデータそのものと、そのファイルの所有者、パーミッション、作成日時といったメタ情報を格納する「iノード(inode)」という管理領域が別々に存在する。そして、我々が普段使っているファイル名は、このiノードに紐づけられた識別のためのラベルに過ぎない。一つのiノードに対して、複数のファイル名を結びつけることが可能であり、この結びつきこそがリンクの正体である。

lnコマンドで作成できる一つ目の種類はハードリンクである。これは、ln [対象ファイル] [リンク名]という書式で作成する。ハードリンクは、一つのiノードに対して、新たなファイル名を追加する操作に相当する。つまり、既存のファイルが持つiノードに、別の名前を直接結びつける。このため、元となったファイルとハードリンクによって作成されたファイルは、システム上では完全に対等な関係となり、どちらがオリジナルでどちらがリンクという区別は存在しない。両者は同じiノード、つまり同じファイルの実体を共有している。この特性から、ハードリンクにはいくつかの重要な性質がある。一つは、片方のファイルを編集すると、もう一方のファイルにもその内容が反映されることである。これは、両者が同じデータを見ているため当然である。もう一つは、どちらかのファイルを削除しても、もう片方が存在する限り、ファイルの実体は削除されないという点である。ファイルの実体は、そのiノードを参照しているリンクの数がゼロになったときに初めてファイルシステムから消去される。このリンクの数はリンクカウントと呼ばれ、ls -lコマンドで確認できる。ハードリンクを作成すると、対象ファイルのリンクカウントが1つ増加する。ただし、ハードリンクには制約もある。ディレクトリに対しては作成することができない。これは、ファイルシステム内で循環参照が発生し、整合性が取れなくなるのを防ぐためである。また、異なるファイルシステムやディスクパーティションをまたいで作成することもできない。これは、iノード番号が各ファイルシステム内で閉じた情報であるため、システムを越えて同じiノードを直接参照することが原理的に不可能だからである。

もう一つの種類がシンボリックリンクであり、ソフトリンクとも呼ばれる。これは、ln -s [対象ファイル] [リンク名]のように、-sオプションを付けて作成する。シンボリックリンクはハードリンクとは仕組みが全く異なる。シンボリックリンク自体も独立したファイルであり、自身のiノードを持っている。そして、そのファイルデータの中身には、リンク先となるファイルやディレクトリのパス情報が文字列として格納されている。あるシンボリックリンクにアクセスすると、システムはそのパス情報を読み取り、指定された場所にある実体ファイルへとアクセスを転送する。これはWindowsのショートカットの動作に非常に近い。シンボリックリンクは、オリジナルとリンクの関係が明確に区別される。シンボリックリンクファイルを削除しても、リンク先のファイルには何の影響もない。しかし、逆にリンク先のファイルを削除したり、名前を変更したりすると、シンボリックリンクは参照先を失い、「リンク切れ」の状態になる。この状態でリンクにアクセスしようとすると、ファイルが見つからないというエラーが発生する。シンボリックリンクの最大の利点は、ハードリンクが持つ制約がないことである。ディレクトリに対しても自由に作成できるほか、異なるファイルシステムやパーティションをまたいでリンクを張ることも可能である。これにより、例えば容量の少ないディスクにある大きなディレクトリを、容量の大きい別のディスクに移動させ、元の場所にはシンボリックリンクを置くといった柔軟なディスク管理が実現できる。

ハードリンクとシンボリックリンクは、その特性に応じて使い分けられる。ハードリンクは、ファイルのバックアップ用途や、同一ファイルを複数のプロジェクトから参照しつつ、実体を一つに保ちたい場合などに用いられるが、挙動が直感的でないため利用シーンは限定的である。一方、シンボリックリンクは非常に広く利用されている。代表的な例として、ソフトウェアのバージョン管理が挙げられる。新しいバージョンのソフトウェアをインストールした後、旧バージョンを向いていたシンボリックリンクを新しいバージョンに張り替えるだけで、システム全体の設定を変更することなく、アプリケーションの切り替えが完了する。また、様々な場所に散らばる設定ファイルを一箇所にまとめ、各所にシンボリックリンクを配置することで、設定の管理やバックアップを容易にするという使い方も一般的である。このように、lnコマンドはLinuxシステムの管理において不可欠なコマンドであり、二種類のリンクの違いを正しく理解し、目的に応じて使いこなすことが求められる。