ln コマンド
目的
ファイルをリンクします。
構文
ファイルをファイルにリンクする
ln [ -f | -n ] [ -s ] SourceFile [ TargetFile ]
1 つ以上のファイルをディレクトリーにリンクする
説明
ln コマンドは、SourceFile パラメーターで指定されたファイルを、TargetFile パラメーターで指定されたファイルまたは TargetDirectory パラメーターで指定された別のディレクトリー内の同じファイル名にリンクします。デフォルトでは、ln コマンドはハード・リンクを作成します。 ln コマンドを使用してシンボリック・リンクを作成するには、-s フラグを指定します。
シンボリック・リンクはファイルへの間接ポインターで、そのディレクトリー・エントリーにはリンク先のファイルの名前が含まれます。 シンボリック・リンクは複数のファイルシステムにおよび、複数のディレクトリーを参照する場合もあります。
ファイルを新しい名前にリンクする場合、リストできるファイルは 1 つだけです。 ディレクトリーにリンクする場合は、複数のファイルをリストできます。
TargetFile パラメーターはオプションです。 ターゲット・ファイルを指定しないと、ln コマンドは、現行ディレクトリーに新しいファイルを作成します。 この新しいファイルは、SourceFile パラメーターで指定されたファイルの名前を継承します。 例 5 を参照してください。
注:
- -s フラグを使用せずにファイルシステムを通してファイルをリンクすることはできません。
- TargetDirectory が既にディレクトリーへのシンボリック・リンクである場合、ln コマンドは既存のターゲットをファイルとして扱います。これは、ln -fs somepath/lname symdir などのコマンドは、symdir への既存のシンボリック・リンクに従わず、somepath/lname から symdir に新しいシンボリック・リンクを作成するということを意味しています。
フラグ
| 項目 | 説明 |
|---|---|
| -f | ln コマンドに既に存在する宛先パスを置換させます。 宛先パスが既に存在していて -f フラグが指定されなければ、ln コマンドは新しいリンクを作らずに、診断メッセージを標準エラーに書き込み、残りの SourceFiles のリンクを続行します。 |
| -n | リンクが既存ファイルである場合に、ファイルの内容に上書きしないことを指定します。 -f フラグはこのフラグをオーバーライドします。 これはデフォルトの動作です。 |
| -s | ln コマンドはシンボリック・リンクを作成させます。
シンボリック・リンクはリンク先のファイルの名前を含みます。
参照されたファイルはリンク上でオープン操作を実行するときに使われます。
シンボリック・リンクに対する stat 呼び出しはリンク先のファイルを戻すので、lstat 呼び出しを行ってリンクに関する情報を得なければなりません。
readlink 呼び出しを使ってシンボリック・リンクの内容を読み取ることができます。
シンボリック・リンクはファイルシステム間で行うことができ、ディレクトリーを参照することができます。
注: -s フラグに SourceFile パラメーターを指定するときは、絶対パス名を使用しなければなりません。 絶対パス名が指定されないと、SourceFile パラメーターと TargetFile パラメーターが異なるディレクトリーに存在する場合は、その結果が予想できないことがあります。 シンボリック・リンクを作成する前にソース・ファイルが存在している必要はありません。 |
終了状況
このコマンドは次の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | 指定したファイルはすべて正常にリンクされました。 |
| >0 | エラーが発生しました。 |
例
- 別のリンク (別名) をファイルに作成するには、次のように入力します。
これによって、chap1 が新しい名前 intro にリンクされます。 intro が存在しないと、そのファイル名が作成されます。 intro が存在すると、ファイルは chap1 へのリンクによって置換されます。 これで、chap1 と intro は同じファイルを参照する 2 つのファイル名になります。 どちらか 1 つが変更されると、他の 1 つも変更されます。 どちらか 1 つのファイル名を rm コマンドで削除しても、そのファイルは別のファイル名で残っているので、ファイル自体は削除されません。ln -f chap1 intro - ファイルを別のディレクトリー内の同じ名前にリンクするには、次のように入力します。
これによって index が新しい名前 manual/index にリンクされます。ln index manual注: 例 1 の intro はファイルの名前ですが、例 2 の manual は既に存在するディレクトリーです。
- 複数のファイルを別のディレクトリー内の名前にリンクするには、次のように入力します。
これによって chap2 が新しい名前 /home/manual/chap2 にリンクされ、jim/chap3 が同じく新しい名前 /home/manual/chap3 にリンクされます。ln chap2 jim/chap3 /home/manual - パターン・マッチング文字を指定して ln コマンドを使用するには、次のように入力します。
これによって、manual ディレクトリー内のすべてのファイルが現行ディレクトリーである . (ドット) ディレクトリーにリンクされ、 それらのファイルには manual ディレクトリーで付けられていたファイル名と同じ名前が付けられます。ln manual/* .注: アスタリスクとピリオドの間にはスペースを入力しなければなりません。
- シンボリック・リンクを作成するには、次のように入力します。
これによって、現行ディレクトリーにシンボリック・リンク toc が作成されます。 toc ファイルは /tmp/toc ファイルを指します。 /tmp/toc ファイルが存在すると、cattoc コマンドはその内容をリストします。ln -s /tmp/toc tocTargetFile パラメーターを指定しないで同じ結果を得るには、次のように入力します。
ln -s /tmp/toc
ファイル
| 項目 | 説明 |
|---|---|
| /usr/bin/ln | ln コマンドが入っています。 |