ディレクトリの深部(階層の深いところ)や普段利用しないディレクトリにあるファイルにアクセスするには,ディレクトリを移動したり,パスを指定したりする必要があります。その際に長いパス名を指定するのは面倒です。
そうしたときに便利なのが「リンク」です。仮のファイルにアクセスすることで,そのファイルの実体にアクセスしたのと同じになります。Windowsの「ショートカット」とよく似た機能と言えます。
Linuxでは,「ハード・リンク」と「シンボリック・リンク」の2種類が利用できます。
ハード・リンク
Linuxでのファイルは,ファイルの実体とファイル名に分かれて,ファイル・システムに保存されています。実体とファイル名を結び付けるのが,「iノード」番号です。
ハード・リンクは複数のファイル名が同じiノード番号を持つことで,リンクを実現しています。例えば,ファイルの実体のiノード番号は2431で,ファイル名「file1」と「file2」のそれぞれのiノード番号が2431であれば,どちらのファイル名にアクセスしても同じ実体にアクセスされます。
このハード・リンクには,2つの異なるファイル・システムをまたいでリンクを張れないなどの制限があります。
ハード・リンクの作成
ハード・リンクを作成するときは,lnコマンドの後にリンク先(実体),リンク元(リンク・ファイル)の順に指定します。例えば,/usr/local/bin/script.shファイルのリンクをホーム・ディレクトリに作成するには,
|
と実行します。すると,カレント・ディレクトリにハード・リンクの「script.sh」が作成されます。こうして作成されたリンク・ファイルは,ファイルの詳細を実行すると,リンク数が2以上になっています(図1)。
図1●リンクの確認 「ls -l」コマンドを実行することで,リンク・ファイルか実体を確認できます。ハード・リンクは第2項目が2以上に,シンボリック・リンクははじめに「l」と表示されます。 [画像のクリックで拡大表示] |
シンボリック・リンク
シンボリック・リンクは,リンク・ファイルにリンク先のパスを保存しておくリンク方法です。例えば,「/usr/bin/sh」にリンクを張ると,リンク・ファイルにはこのパスが保存されます。リンク・ファイルにアクセスすると,保存されているパスを閲覧して,リンク先のファイルが呼び出される仕組みです。ハード・リンクのような制限がないこともあり,シンボリック・リンクが主に利用されています。
シンボリック・リンクでの注意点は,リンク先が移動/削除/名前変更されると,リンク・ファイルはデッド・リンク(リンク先のないリンク・ファイル)になってしまうことです。
シンボリック・リンクの作成
シンボリック・リンクはlnコマンドに「-s」オプションを付けて利用します。例えば,work/doc/text.txtファイルのリンクをカレント・ディレクトリに作成するには,
|
と実行します。すると,カンレント・ディレクトリにリンク・ファイルの「text.txt」が作成されます。また,ファイルの詳細を実行すると,ファイル種別に「l」が付いています(図1)。さらにファイル名は「リンク名 -> リンク先のパス」のように表示されます。
シンボリック・リンクのアクセス権は,リンク先のファイルのパーミッションによって決定されます。