LN(1)

名称
ln - リンクの作成

書式
ln [-fhns] source_file [target_file] [-fhns] source_file ... [target_dir]

解説
ln ユーティリティは、オリジナルファイルと同じモードを持つ 新しいディレクトリエントリ (リンクファイル) を作成します。 これは、1 つのファイルの複数のコピーを、その “コピー” のかわりに オリジナルを “指し示す” リンクを使うため、 ディスク領域を無駄使いせずに扱うことができるという点で有効です。 リンクファイルには 2 つの形式があり、 ハードリンクとシンボリックリンクとがあります。 ハードリンクとシンボリックリンクとの違いの 1 つは、ファイルをどのように “指し示す” かという点です。

オプションとしては以下のものがあります:

-f  target_file がすでに存在する場合はリンクが失敗してしまうため、 リンクが成功するように既に存在するファイルを先に削除します。

-h  target_file または target_dir がシンボリックリンクだった場合、その先を辿りません。これは -f オプションと一緒に使うと効果的で、 ディレクトリを指しているシンボリックリンクの置き換えができます。

-n  -h と同じです。他の ln のインプリメントとの互換性を維持するために用意してあります。

-s  シンボリックリンクを作成します。

デフォルトでは、 ln は ハードリンクを作成します。 ハードリンクは、オリジナルのディレクトリエントリとは区別がつかず、 ファイルに対する変更は、そのファイルを参照するために利用した名前とは 無関係です。 通常はディレクトリをリンクすることはできず、別のファイルシステムへ跨いだ リンクも張ることはできません。

シンボリックリンクには、リンクされるファイルの名前が入っています。 リンクに対して open(2) を行った時に参照される側のファイルが使われます。 シンボリックリンクに対する stat(2) は、リンクされているファイルに対する値を返し、 lstat(2) をすればリンクそのものに対する情報が得られます。 readlink(2) コールは、シンボリックリンクの内容を読む場合に利用します。 シンボリックリンクは、別のファイルシステムへ跨いだリンクや ディレクトリへのリンクもできます。

引数が 1 つもしくは 2 つの場合は、 ln は既存のファイル source_file へのリンクを作成します。 target_file が指定された場合は、それがリンクの名前になります。 ここで target_file はそのディレクトリを置くディレクトリでもよく、そうでなければ カレントディレクトリに置かれます。 もし、ディレクトリだけが指定された場合は、 source_file の最後の要素に対するリンクが作成されます。

3 つ以上の引数が与えられた場合は、 ln は指定された全ての source_file に対するリンクを target_dir 内に作成します。 リンクの名前はリンクされるファイルの名前と同じものになります。

使用例
ディスク /dev/sd2a がルートディレクトリ(/)に、/dev/rsd2d が ユーザーディレクトリ (/usr) に、マウントされている状態で、 ルートディレクトリ上のファイル netbsd にリンクを張ろうとしたものです。

    # ls -l /netbsd*
    -rwxr-xr-x  1 root  wheel  890705 Art 21 04:16 netbsd
    # ln /netbsd /netbsd-link
    # ls -l /netbsd*
    -rwxr-xr-x  2 root  wheel  890705 Art 21 04:16 netbsd
    -rwxr-xr-x  2 root  wheel  890705 Art 21 04:16 netbsd-link
    # ln /netbsd /usr/netbsd-link
    ln: /usr/netbsd-link: Cross-device link
    # ln -s /netbsd /usr/netbsd-link
    # ls -l /netbsd* /usr/netbsd*
    -rwxr-xr-x  2 root  wheel  890705 Art 21 04:16 netbsd
    -rwxr-xr-x  2 root  wheel  890705 Art 21 04:16 netbsd-link
    lrwxr-xr-x  1 root  wheel       7 Art 24 11:39 /usr/netbsd-link -> /netbsd

関連項目
link(2), lstat(2), readlink(2), stat(2), symlink(2), symlink(7)

歴史
ln ユーティリティは AT&T UNIX から登場しました。