lnユーティリティの使用例 | |
| 原作者 | AT&T ベル研究所 |
|---|---|
| 開発者 | さまざまなオープンソースおよび商用開発者 |
| 初回リリース | 1971年11月3日 |
| オペレーティング·システム | Unix、Unix ライク、IBM i |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 指示 |
| ライセンス | コアユーティリティ: GPLv3+ |
コマンドは、既存のファイルまたはディレクトリへのハードリンクまたはシンボリックリンク(symlink)を作成するために使用される標準的なUnixコマンドlnユーティリティです。 [1]ハードリンクを使用すると、データがディスクに保存されている特定のファイルのinodeを指すため、複数のファイル名を同じファイルに関連付けることができます。一方、シンボリックリンクは、名前で他のファイルを参照する特別なファイルです。[2]
このlnコマンドはデフォルトでハードリンクを作成し、コマンドライン パラメータ ln -sで呼び出されるとシンボリックリンクを作成します。[3]ほとんどのオペレーティングシステムでは、ディレクトリへのハードリンクの作成を禁止しています。これは、そのような機能がファイルシステムの構造を破壊し、他のユーティリティの動作を妨げる可能性があるためです。[4]ただし、このlnコマンドを使用して、存在しないファイルへのシンボリックリンクを作成することができます。[2]
バージョン
lnX/Open Portability Guidelinesの第 2 号に掲載されました。[5] GNU coreutilslnにバンドルされているバージョンは、Mike Parker と David MacKenzie によって作成されました。[6]このコマンドは、一般的な GNU Unix ライクなユーティリティのネイティブWin32ポートのUnxUtilsコレクションの一部として、Microsoft Windows
用の個別のパッケージとして利用できます。 [7] lnコマンドは、 IBM iオペレーティング システムにも移植されています。[8]
リンク
リンクを使用すると、ハードリンクの場合のように複数のファイル名が同じファイルを参照したり、ソフトリンクの場合のようにファイル名へのポインタとして機能したりできます。ハードリンクとソフトリンクの両方をコマンドで作成できます。具体的には、
ln
- ハードリンクは、単にリンクとも呼ばれ、ファイル名をinodeに関連付け、したがってファイルの内容自体を関連付けるオブジェクトです。[1]ディスク上の特定のファイルには、ディレクトリ階層全体に散在する複数のリンクが存在する可能性があり、それらはすべて同じinodeに関連付けられているため、すべてのリンクは同等です。[9]したがって、リンクを作成してもファイルの内容がコピーされるのではなく、単に同じ内容に別の名前が関連付けられるだけです。ハードリンクが作成されるたびに、inode 構造の一部であるリンクカウンターが増加します。ファイルは、参照カウントがゼロになるまで削除されません。[1] [10]ただし、ハードリンクは同じファイルシステムでのみ作成できるため、これが不利になる場合があります。[11]
- シンボリックリンクは、パス名解決中に遭遇すると、シンボリックリンクを含む場所に移動するようにパス名解決を変更する特別なファイルです。したがって、シンボリックリンクの内容は宛先パス文字
readlink列であり、コマンドラインユーティリティを使用して調べることもできます。 [12]シンボリックリンクには、既存のファイルの場所を参照しない任意の文字列を含めることができます。このようなシンボリックリンクは、シンボリックリンクに含まれる場所にファイルが作成されるまで失敗します。対照的に、既存のファイルへのシンボリックリンクは、既存のファイルが別の場所に移動された場合(または名前が変更された場合)に失敗します。[9]
仕様
Single Unix仕様lnに準拠したシステム上のユーティリティは、Single Unix仕様の一部であるShell and Utilities (XCU)文書で規定されています。[13]ほぼ同一の文書がPOSIXの一部です。[5]
仕様では、lnユーティリティを呼び出す2つの方法を説明しています。具体的には、
- 「単一ファイル」呼び出しでは、ユーティリティはオペランドで指定された宛先パスに、オペランドで指定
lnされたソース ファイルの新しいハード リンク (ディレクトリ エントリ) を作成します。ただし、オプションが指定されている場合は、シンボリック リンクが作成されます。source_filetarget_file-s ln [ -fs ] [ -L | -P ]ソースファイルターゲットファイル
- 「複数ファイル」呼び出しでは、ユーティリティは、オペランドで指定された各ファイルに対して、オペランドで指定された既存のディレクトリ内の宛先パスに
ln新しいハード リンク (ディレクトリ エントリ) を作成するか、オプションが指定されている場合はシンボリック リンクを作成します。-ssource_filetarget_dir ln [ -fs ] [ -L | -P ]ソースファイル1ソースファイル2 ...ターゲットディレクトリ
- 「単一ファイル」呼び出しでは、ユーティリティはオペランドで指定された宛先パスに、オペランドで指定
仕様では、サポートする必要があるコマンドライン オプションも指定されています。
-fリンクを許可するには、既存の宛先パス名を強制的に削除します。-Lシンボリック リンクであるファイルを指定するオペランドごとにsource_file、シンボリック リンクによって参照されるファイルへのハード リンクを作成します。-Psource_fileシンボリック リンクであるファイルを指定するオペランド ごとに、シンボリック リンク自体への (ハード) リンクを作成します。-sハード リンクの代わりにシンボリック リンクを作成します。-s オプションが指定されている場合、-L オプションと -P オプションは黙って無視されます。- 相互に排他的なオプションが複数指定されている場合
-L、-P最後に指定されたオプションによってユーティリティの動作が決まります。 -sオプションが指定されておらず、 または オプションのどちらも-L指定されていない場合は-P、実装によって-Lおよび-Pオプションのどちらがデフォルトとして使用されるかが定義されます。
ターゲットファイルもターゲットディレクトリも指定されていない場合は、現在の作業ディレクトリにリンクが作成されます。
参照
参考文献
- ^ abc カーニハン、ブライアン W.; パイク、ロブ (1984)。Unixプログラミング環境。イングルウッドクリフス、ニュージャージー: プレンティスホール。p. 59。ISBN 013937681X。
- ^ ab "GNU Coreutils: ln invocation". gnu.org . Free Software Foundation, Inc. 2015年8月7日閲覧。
- ^ 「ln - The Open Group Base Specifications Issue 7」。pubs.opengroup.org。IEEEおよび The Open Group。2015年8 月 7 日閲覧。
- ^ 「UNIX/Linux ではなぜディレクトリへのハードリンクが許可されないのか?」unix.stackexchange.com 。 2015 年8 月 7 日閲覧。
- ^ ab – シェルおよびユーティリティ リファレンス、The Single UNIX 仕様、バージョン 4、The Open Groupより
- ^ – Linux一般コマンドマニュアル
- ^ 「いくつかの GNU ユーティリティのネイティブ Win32 ポート」unxutils.sourceforge.net。
- ^ IBM . 「IBM System i バージョン 7.2 プログラミング Qshell」(PDF) . IBM . 2020 年 9 月 5 日閲覧。
- ^ ab Loosemore, Sandra; Stallman, Richard M.; McGrath, Roland; Oram, Andrew; Drepper, Ulrich. GNU C ライブラリリファレンスマニュアル(PDF) . Free Software Foundation, Inc. p. 392 . 2015 年8 月 7 日閲覧。
- ^ 「Speaking UNIX: It is all about the inode」. ibm.com . IBM developerWorks . 2015 年8 月 7 日閲覧。
- ^ Bovet, Daniel P.; Cesati, Marco (2005). Linuxカーネルの理解(第3版). ボストン、マサチューセッツ州:Safari Tech Books Online. p. 14. ISBN 0596005652。
- ^ "readlink(1) - Linux manページ". linux.die.net . 2015年8月7日閲覧。
- ^ 「Single UNIX 仕様、バージョン 4 - 概要」。unix.org。unix.org。2015年8月7 日閲覧。
