Linuxでlnコマンドを使用してファイル間で接続を確立する方法の説明
Unixの世界には2つの「link」(接続)概念があり、一般的にはハード接続とソフト接続と呼ばれています。ハード接続はファイル名のみです。(1つのファイルにはいくつかのファイル名があり、最後のファイル名をディスクから削除してこそ、このファイルを削除することができる。ファイル名の個数はls(1)によって決定される。すべてのファイル名は同じ状態にあり、lqソース名rqという言葉はありません。通常、ファイルシステムの1つのファイルのすべての名前には同じデータ情報が含まれていますが、これも必要ではありません。)ソフト接続(またはシンボル接続)はまったく異なります。パス情報を含む小さな指定ファイルです。したがって、ソフト接続は、NFSによってマウントされた異なるマシンファイルシステム上のファイルなど、異なるファイルシステム内のファイルを指すことができ、必ずしも存在しないファイルを指すこともできる。ソフト接続ファイルがアクセスされる(open(2)またはstat(2))場合、オペレーティングシステムは、そのファイルに含まれるパスをそのファイルのアクセス介入点に置き換え、そのファイルへのアクセスを実現する。(コマンドrm(1)とunlink(2)で接続を削除できますが、ファイルが指すファイルを削除するわけではありません。システムはlstat(2)とreadlink(2)を呼び出して接続ファイルとその指すファイルの状態を読み出すことを指定する。ソフト接続ファイルに対して操作するか、指向されたファイルに対して操作するかは、異なるオペレーティングシステム部品によって異なるシステム呼び出しがあるため、違いがある。)
lnはファイル間に接続を生成する。デフォルトでは、ハード接続が生成され、-sオプションがある場合は、シンボル(ソフト)接続が生成されます。
ファイル名が1つしか与えられていない場合、lnは現在のディレクトリにこのファイルの接続を生成し、すなわち、そのファイル(の最後の)名と同じ名前で現在のディレクトリに接続を生成する(GNUの範囲内)。最後のパラメータが既存のディレクトリ名である場合、lnはそのディレクトリにソースファイルごとにソースファイルと同じファイル名で接続を生成するために使用される(場合によっては以下のno-dereferenceの説明を参照)。2つのファイル名しか指定されていない場合、lnはソースファイルの接続を生成します。最後のパラメータがディレクトリ名でないか、2つ以上のファイル名でない場合は、エラーが表示されます。
デフォルトでは、lnは既存のファイルまたはシンボル接続を削除しません。(したがって、destが存在しない場合、ターゲットファイルをロックするために使用できますが、オプション-fは強制的に実行できます。
既存のインプリメンテーションでは、スーパーユーザーのみがディレクトリのハード接続を確立できます。POSIXは、link(2)とlnを呼び出してディレクトリのハード接続を確立することを禁止する(ただし、異なるファイルシステム間でハード接続を確立することは可能である)。
使用方法:ln[options]source dist、ここでoptionのフォーマットは:
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}][--help] [--version] [--]
説明:Linux/Unixファイルシステムには、いわゆる連結(link)があり、ファイルの別名と見なすことができますが、連結は2つに分けることができます:ハード連結(hard link)とソフト連結(symbolic link)で、ハード連結の意味は1つのファイルに複数の名前を持つことができ、ソフト連結の方法は特殊なファイルを生成することです。このファイルの内容は、別のファイルの場所を指します。ハードコネクションは同じアーカイブシステムに存在するが、ソフトコネクションは異なるアーカイブシステムを越えることができる。
ln source distはsourceに連結(dist)を生成し、ハード連結またはソフトリンクを使用するにはパラメータによって決定される。
ハードリンクやソフトリンクにかかわらず、元のファイルをコピーすることはなく、非常に少ないディスクスペースしか消費されません。
-f:リンク時にdistと同じファイル名のファイルを削除する
-d:システム管理者が自分のディレクトリをハードリンクすることを許可する注意:
-sフラグを使用しないと、ファイルシステム間でファイルをリンクできません。