概要
`link`コマンドは、指定された2つのファイルパスを使用してハードリンクを作成します。最初の引数は既存のファイルのパス、2番目の引数は新しく作成されるハードリンクのパスです。このコマンドは`ln`コマンドのハードリンク作成機能に似ていますが、追加のオプションなしでハードリンク作成機能のみを提供します。
主な特徴
- 既存のファイルに対するハードリンクの作成
- 元のファイルと同じinodeの共有
- 同じファイルシステム内でのみ機能
- ディレクトリへのハードリンク作成不可
使用例
以下は`link`コマンドの使用例です。
基本的なハードリンクの作成
echo "Hello, World!" > original.txt
link original.txt hardlink.txt
ls -li original.txt hardlink.txt
`original.txt`ファイルに対する`hardlink.txt`という名前のハードリンクを作成します。
元のファイルを削除した後のリンク確認
echo "This is a test." > file_to_link.txt
link file_to_link.txt linked_file.txt
rm file_to_link.txt
cat linked_file.txt
元のファイルを削除しても、ハードリンクを通じてデータにアクセスできることを示します。
ヒントと注意点
`link`コマンドを使用する際の役立つヒントと注意すべき点です。
ハードリンクの理解
- inodeの共有: ハードリンクは元のファイルと同じinode番号を持ちます。これは、2つの名前が同じ実際のデータを指していることを意味します。ファイルシステムはinodeの参照カウント(リンクカウント)を追跡し、このカウントが0になるまで実際のデータは削除されません。
- ファイルシステムの境界: ハードリンクは同じファイルシステム内でのみ作成できます。別のパーティションやマウントされたディスク上のファイルにはハードリンクを作成できません。この場合、シンボリックリンク(symlink)を使用する必要があります。
- ディレクトリへのリンク不可: `link`コマンドはディレクトリに対するハードリンクを作成できません。ディレクトリのハードリンクはファイルシステムの整合性を損なう可能性があるため、一般的に許可されていません。
`link`と`ln`の違い
- 機能: `link`コマンドはハードリンクのみを作成します。一方、`ln`コマンドは`-s`オプションでシンボリックリンクを作成でき、`-f`(強制上書き)、`-v`(詳細表示)などの追加オプションを提供します。
- 使いやすさ: ほとんどの場合、`ln`コマンドの方が柔軟で使いやすいため広く使用されています。`link`は`ln`のハードリンク作成機能のみを提供する、より基本的なユーティリティです。