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