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]$
関連タグ
本コンテンツは「UNIXコマンド辞典 ビギナー編」(2003年)を元にWeb用に再編集したものです
All Contents copyright © 2003-2009 Odyssey Communications Inc., Shoeisha Co., Ltd.