UNIXの操作/UNIXでのファイル・ディレクトリ操作/ファイル・ディレクトリへのリンク ln

リンクは同じ内容のファイルを異なる名前やパス名で利用するための機能です.

リンクはコピーと異なり,参照先のパスをファイルの内容として保存するだけなのでファイル空間を効率的に利用できます.複数のユーザで同じファイルを参照する場合や,グループで作業するなどの場合には,同じファイルをそれぞれのディレクトリにコピーするよりも,リンクを使った方が効率がよくなります.リンクを作成することを``リンクを貼る''と呼びます.

リンクには``シンボリックリンク''と``ハードリンク''があります.シンボリックリンクはリンク先のファイルが消去されてしまうと参照できなくなります.それに対して,ハードリンクはリンク先のファイルが消去されてもファイルの実体は残っており,内容を参照できます.通常はシンボリックリンクを使います.


リンクを貼る

リンクを張るには,lnコマンド(LiNk)を実行します.参照するリンク先のファイル名と新しく作成するリンクの名前を指定します.`-s'オプションはシンボリックリンクを貼るときに指定します.

ln [-s] [リンクする先のファイル名] [リンクの名前]

次に,ユーザ`s01000hf'がユーザ`t01000tf'のホームディレクトリにある`file2'に対して,自分のホームディレクトリに`file2-link'という名前のリンクを作成する例を示します.

こうして作成された`file2-link'の内容をcatコマンドなどで見ると`file2'と同じであることが確認できます.


ただし,リンクの実体は参照先のファイルのパスなので,ファイル容量は非常に小さくなっています.`ls -l'コマンドを実行すると,先頭のファイルタイプが `l'であることからリンクであることがわかります.


シンボリックリンクは,参照先が存在しなくてもエラーになりません.シンボリックリンクを削除する際には,rmコマンドを実行します.rmコマンドはシンボリックリンクの指す先ではなく,リンク自体を削除します.

シンボリックリンク自体のパーミッションはまったく意味を持ちません.


%ls -F <RET>
file1
%ln -s ~t01000tf/file1 ~/file2-link<RET>
%ls -F <RET> file1 file2-link@
%ls -l <RET>
total 2
-rw-r-r- 2 s01000hf 3024 Nov 20 09:27 file1
lrwxrwxrwx 1 s01000hf 10 Nov 20 15:35 file2-link -> /home/t01000tf/file1
% _


リンクを解消する
リンクを解消するには,一般のファイルと同様にrmコマンドで,シンボリックリンクを貼ったファイルを消します.なお,シンボリックリンクを貼ったファイルを消しても,リンク先の相手のファイルが消えてしまうことはありません.
他のユーザが持っている大きな容量のファイル(実行形式のファイル,画像ファイルなど)は,コピーするよりもリンクを貼ってください.コピーした場合,CNS に同じファイルが増え,ファイル空間を無駄に使うことになります.ただし,リンク先のファイルは変更される可能性があります.実行形式のファイルや,重要な画像やデータベースにリンクを貼るときは,注意してください.