ln コマンドは、ファイルへのリンクを作成するために使用されます。リンクを使用すると、あるディレクトリ (リンク) 内のファイル名が別のディレクトリ (ターゲット) 内のファイルを指すことができます。リンクには、それ自体のデータは含まれず、ターゲット ファイルへの参照のみが含まれます。リンクを変更すると、ターゲット ファイルに反映されます。リンク名を指定しない場合、ln コマンドは現在の作業ディレクトリにリンクを作成します。
構文
ln コマンドの構文は次のとおりです。
# ln [options] {target name} [link name]
ln コマンド オプション
ln コマンドにはさまざまなオプションがあります。よく使用されるオプションの一部を次の表に示します。
オプション | 慣れている |
---|---|
–バックアップ | 既存の宛先ファイルをバックアップします。 |
-f | 既存の宛先ファイルを削除します。 |
-s | ハード リンクの代わりにシンボリック リンクを作成します。 -i 宛先ファイルの削除を求めるプロンプト。 |
-v | リンクする前にファイル名を出力します。 |
リンクの種類
ln コマンドを使用すると、ハードとシンボリック (ソフト) の 2 種類のリンクを作成できます。ハード リンクとシンボリック リンクはファイル システムの機能であり、Linux でサポートされているほとんどのファイル システムで一般的です。 ext2、ext3、ext4、および XFS ファイル システムはすべて、ハード リンクとシンボリック リンクをサポートしています。
ハード リンク
ハード リンクは別のファイルへの参照です。ファイルのデータは、同じファイル システム内の異なる場所に複数の名前を持つことができます。アプリケーションは、ハード リンクを実際のファイルとして扱います。ハード リンクの作成後に元のファイルが削除された場合、そのすべてのコンテンツはリンクされたファイルで引き続き利用できます。これは、ハード リンクの inode がそのターゲットと同じであるためです。つまり、ファイル システム上の同じオブジェクトを指しています。 2 つのディレクトリ間にハード リンクを作成することも、異なるファイル システムの 2 つのファイル間にハード リンクを作成することもできません。
ソフト リンク (シンボリック リンク)
シンボリック リンクは、複数のファイル システムにまたがるファイルまたはディレクトリへの参照です。シンボリック リンクの作成後に元のファイルまたはディレクトリが削除されると、元のコンテンツは失われます。これは、シンボリック リンクの inode がそのターゲットと異なるためです。つまり、ファイル システム上の別のオブジェクトを指しています。シンボリック リンクは、ソフト リンクとも呼ばれます。
リンクの例
以下は、ln コマンドを使用してハード リンクを作成する例です。ここで、/backup/backup-report はリンクのターゲットであり、~/backup-report はリンク自体です:
$ ln /backup/backup-report ~/backup-report
以下は同じ例ですが、ハード リンクの代わりにシンボリック リンクを作成しています:
$ ln -s /backup/backup-report ~/backup-report
ln コマンドの例
1. 既存のファイルのリンクを作成するには:
# ln file.txt file.ln
2. 既存のファイルのソフト リンクを作成するには:
# ln -s file.txt file.ln
3. 各宛先ファイルのバックアップを作成するには:
# ln --backup file.txt file.bk
4. スーパー ユーザーがハード リンク ディレクトリを作成できるようにするには:
# ln -d
5. 既存の宛先ファイルを削除してリンクを作成するには:
# ln -f # ln --force
6. 宛先ファイルを削除するかどうかを確認するには:
# ln -i # ln --interactive
7. シンボリック リンク参照へのハード リンクを作成するには:
# ln -L # ln --logical
8. 宛先のシンボリック リンク ディレクトリをファイルとして扱うには:
# ln -n # ln --no-dereference
9. シンボリック リンクに直接ハード リンクを作成するには:
# ln -P # ln --physical
10. ハード リンクの代わりにシンボリック リンクを作成するには:
# ln -s
11. 通常のバックアップ サフィックスをオーバーライドするには:
# ln -S # ln --suffix=SUFFIX
12. ディレクトリを作成するディレクトリを指定するには:
# ln -t # ln --target-directory=DIRECTORY
13. リンク名を通常のファイルとして扱うには:
# ln -T # ln --no-target-directory
14. リンクされた各ファイルの名前を印刷するには:
# ln -v # ln --verbose
15. ln のヘルプを表示するには:
# ln --help
16. バージョン情報を取得するには:
# ln --version