Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

ln

リンクファイルを作成する
2015/05/20 08:00

対応OS: linux , freebsd, solaris
ln [-s] [-f] [-i] [-v] [-b] [-n] FILE LINK
ln [-s] [-f] [-i] [-v] [-b] [-n] FILE... DIR

 lnコマンドは、ファイルやディレクトリへのリンクファイルを作成します。

 リンクファイルとは、WindowsのショートカットやMacOSのエイリアスのようなもので、ハードリンクとシンボリックリンクという2種類があります。

 ハードリンクは、リンク先ファイルの実体の位置情報(iノード)をそのまま使用し、ハードリンクすべてを削除しないとファイルの実体が削除されないという特長がありますが、その性質がゆえに異なるパーティション上には作成できません。それに対してシンボリックリンクは、ファイルの実体のパスを保持しているので、異なるパーティションに作成できたり、ディレクトリをリンク先とすることができる特長がありますが、ファイルの実体のみを削除できてしまうという弱点があります。

オプション
① -s
シンボリックリンクを作成します。このオプションを省略した場合は、ハードリンクを作成します。
② -f
作成するリンクファイルと同一名のファイルが存在しても、問い合わせなしに上書きします。
③ -i [Linux][FreeBSD]
作成するリンクファイルと同一名のファイルが存在する場合に、上書きするか否かを問い合わせます。
④ -v [Linux][FreeBSD]
処理内容を出力します。
⑤ -b [Linux]
作成するリンクファイルと同一名のファイルが存在する場合に、バックアップファイルを作成してから、問い合わせなしに上書きします。
⑥ -n [Solaris]
作成するリンクファイルと同一名のファイルが存在する場合に、処理を行いません。
引数
① FILE
リンク先のファイルまたはディレクトリのパスを指定します。
② LINK
作成するリンクファイルのパスを指定します。
③ FILE...
リンク先のファイルまたはディレクトリのパスをスペースで区切って指定します。ワイルドカードによる指定も可能です。
④ DIR
作成するリンクファイルが含まれるディレクトリのパスを指定します。FILE...に指定したファイル群へのリンクファイルは、このディレクトリ内に元のファイル名で作成されます。
ハードリンクを作成する
[takeda]$ ls -l 
合計4
-rw-rw-r-- 1 cmd cmd 25 6月1 01:29 file11
[takeda]$ cat file11
これはfile11の中身です。
ファイル「file11」の内容
[takeda]$ ln file11 file11L
ファイル「file11」のハードリンク「file11L」を作成
[takeda]$ ls -l
合計8
-rw-rw-r-- 2 cmd cmd 25 6月1 01:29 file11
-rw-rw-r-- 2 cmd cmd 25 6月1 01:29 file11L
作成したハードリンク元のファイルとまったく同じ
[takeda]$ cat file11L
これはfile11の中身です。
[takeda]$
[takeda]$ echo "追加データです。" >> file11L
作成したハードリンク「file11L」に文字列「追加データです」を追加出力
[takeda]$ cat file11
これはfile11の中身です。
追加データです。
元のファイルの内容も同じように更新されている(コピーではない)
[takeda]$
シンボリックリンクを作成する
[takeda]$ ls -l 
合計4
-rw-rw-r-- 1 cmd cmd 42 6月1 01:37 file11
[takeda]$ ln -s file11 file11L
ファイル「file11」へのシンボリックリンク「file11L」を作成
[takeda]$ ls -l
合計4
-rw-rw-r-- 1 cmd cmd 42 6月1 01:37 file11
lrwxrwxrwx 1 cmd cmd 6 6月1 01:40 file11L -> file11
[takeda]$
複数のシンボリックリンクを作成する
[takeda]$ ls 
file01 file02
カレントディレクトリの内容
[takeda]$ ls -l ../dir01
シンボリックリンクを作成する ディレクトリ「../dir01」は空
合計0
[takeda]$ ln -sv * ../dir01
カレントディレクトリ内のすべてのファイルへのシンボリックリンクを、ディレクトリ「../dir01」内に作成
create symbolic link '../dir01/file01' to 'file01'
create symbolic link '../dir01/file02' to 'file02'
オプション「-v」を指定すると処理内容を出力(表示)
[takeda]$ ls -l ../dir01
合計0
lrwxrwxrwx 1 takeda takeda 6 5月1 11:37 file01 -> file01
lrwxrwxrwx 1 takeda takeda 6 5月1 11:37 file02 -> file02
作成したシンボリックリンク リンク先と同じ名前で作成されている
[takeda]$
HINT!

 catコマンド・echoコマンド・lsコマンド

関連タグ

UNIXコマンド辞典トップページに戻る

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5