742 words
4 minutes
【Unix】lnコマンドの解説
最終更新:2025-02-22
ln
コマンドは、ファイルのリンクを作成するためのコマンドである。
Windows OSにおけるファイルやフォルダのショートカット機能と似ている。
リンクには「ハードリンク」と「シンボリックリンク(ソフトリンク)」の2種類がある。それぞれの特徴を把握し、運用の目的に応じて使い分けるとよい。
ハードリンク
ハードリンクはリンク元ファイルと同じiノードを指すため、ほぼ同一ファイルとして扱われる。ファイルを消しても、ハードリンクが残っている限りは内容(iノード自体)が削除されない。
特徴:
- 同一ファイルシステム内でのみ作成可能である。
- 元ファイルとハードリンクは実質同じものであり、どちらか一方を削除してももう一方がiノードを参照し続けるため、中身は残る。
シンボリックリンク(ソフトリンク)
シンボリックリンクは、リンク先のファイルへのパスを持つ特殊ファイルである。リンク先が削除・移動されるとリンクが切れてしまう(いわゆる「壊れたリンク」)が、ファイルシステムを跨いでの作成ができるなど利便性が高い。
特徴:
- ファイルシステムを跨いで作成可能である。
- リンク先のiノードを直接共有していないため、元ファイルが削除されるとリンクが無効になる。
※ iノードとは
iノード(inode)は、ファイルシステムがファイルやディレクトリを管理するために用いる領域である。
ファイルのサイズ・パーミッション・タイムスタンプなど、さまざまなメタデータが格納されている。
ハードリンクは同じiノードを指すため、ファイル名が異なっていても内容は同一である。
一方、シンボリックリンクの場合はリンク先のパス情報をもつだけで、iノードを直接共有していないという点が大きな違いである。
主なオプション
-s
: シンボリックリンクの作成-f
: 既存のリンク先ファイルを上書きする-v
: リンク作成時に詳細メッセージを表示する-T
: リンク先を必ずファイル扱いし、ディレクトリを上書きしないようにする
一般的な使用例としては、ハードリンクの作成とシンボリックリンクの作成が挙げられる。
ハンズオン
以下にln
コマンドの簡単な使用例を示す。誤ってファイルを上書きしないよう、オプションの指定に注意することが望ましい。
1. ハードリンクの作成例
ln original.txt linkfile.txt
original.txt
とlinkfile.txt
は同じiノードを共有する。original.txt
を削除した場合でも、linkfile.txt
がある限りデータは残る。
2. シンボリックリンクの作成例
ln -s /path/to/original.txt symlink.txt
symlink.txt
があれば、/path/to/original.txt
を指し示す。- ファイルシステムが異なる場所でも作成可能であり、柔軟にリンクを張ることができる。
3. リンク上書きの例
ln -sf /new/path/file.txt symlink.txt
- 既存の
symlink.txt
があっても強制的に上書きする。 - 誤って上書きしないよう、十分に注意が必要である。
4. 詳細表示を有効にする例
ln -sv /etc/nginx/nginx.conf nginx_link.conf
- リンクの作成元とリンク先の情報が表示されるため、処理内容を確認しやすい。
【Unix】lnコマンドの解説
https://ss0832.github.io/posts/20250222_ln_command_guide/