logo
 
cpacer

3.9 ファイル・ディレクトリへのリンク -- (ln)

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

複数のユーザで同じファイルを参照する場合や, グループで作業するなどの場合には, 同じファイルをそれぞれのディレクトリにコピーするよりも, リンクを使った方が効率がよくなります. リンクを作成することを``リンクを張る''といいます.

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

■リンクを張る
リンクを張るには, lnコマンド(LiNk)を実行します. 参照するリンク先のファイル名と新しく作成するリンクの名前を指定します. `-s'オプションはシンボリックリンクを 張るときに指定します.
書式 ln [-s] [リンクする先のファイル名] [リンクの名前]
次に, ユーザ`s02000hf'が ユーザ`t02000tf'のホームディレクトリにある `file2'に対して, 自分のホームディレクトリに`file2-link'という名前のリンクを作成する例を示します.

こうして作成された`file2-link'の内容をcatコマンドなどで見ると`file2'と同じであることが確認できます. ただし, リンクの実体は参照先のファイルのパスなので, ファイル容量は非常に小さくなっています. `ls -l'コマンドを実行すると, 先頭のファイルタイプが `l'であることからリンクであることがわかります.

シンボリックリンクは, 参照先が存在しなくてもエラーになりません. また,シンボリックリンク自体のパーミッションは意味を持ちません.
% ls -F <RET>
file1
% ln -s ~t02000tf/file1 ~/file2-link <RET>
%ln -F <RET>
file1		file2-link@
% ls -l <RET>
total 2
-rw-r--r-- 2 s02000hf 3024 Nov 20 09:27 file1
lrwxrwxrwx 1 s02000hf   10 Nov 20 15:35 file2-link -> /home/t02000tf/file1
% _


■リンクを解消する
リンクを解消するには,一般のファイルと同様にrmコマンドで,シンボリックリンクを張ったファイルを消します.なお,シンボリックリンクを張ったファイルを消しても,リンク先のファイルが消えてしまうことはありません.

他のユーザが持っている大きな容量のファイル(実行形式のファイル,画像ファイルなど)は,コピーするよりもリンクを張ってください.コピーした場合,CNSに同じファイルが増え,ファイル空間を無駄に使うことになります.ただし,リンク先のファイルは変更される可能性があるので注意してください.