ln コマンドは、既存ファイルに対して新しいリンク(参照)を作成 するコマンドです。
リンクには、同じ inode を指す ハードリンク と、ファイル名の別名を作る シンボリックリンク(ソフトリンク) があります。
ショートカット的な使い方や、設定ファイルの切り替え、複数の場所から同じファイルを参照する場合に使われます。
構文(Syntax)
# ハードリンク作成
ln [オプション] 既存ファイル リンク名
# シンボリックリンク作成
ln -s [オプション] 既存ファイル リンク名
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | ハードリンクを作成 | ln file.txt link.txt |
-s | シンボリックリンクを作成 | ln -s /etc/nginx/nginx.conf conf_link |
-f | 既存のリンクを強制的に上書き | ln -sf new.conf conf_link |
-i | 上書き時に確認を求める | ln -si file.txt link.txt |
-n | シンボリックリンクを上書きする際にリンクをたどらない | ln -snf file link |
-v | 作成したリンクを表示 | ln -sv file.txt link.txt |
-T | リンク名を必ず通常のファイルとして扱う | ln -sT file linkname |
実行例
ハードリンクを作成
ln original.txt hardlink.txt
出力(確認):
ls -li original.txt hardlink.txt
例:
123456 -rw-r--r-- 2 user user 100 Aug 21 10:00 hardlink.txt
123456 -rw-r--r-- 2 user user 100 Aug 21 10:00 original.txt
(同じ inode 番号を持つ)
シンボリックリンクを作成
ln -s /var/log/syslog syslog_link
出力(確認):
ls -l syslog_link
lrwxrwxrwx 1 user user 14 Aug 21 11:00 syslog_link -> /var/log/syslog
リンクを強制的に上書き
ln -sf new.conf conf_link
相対パスのシンボリックリンクを作成
ln -s ../config/settings.conf settings_link
エラー例(存在しないファイルをリンク)
ln notfound.txt link.txt
出力例:
ln: failed to access 'notfound.txt': No such file or directory
関連コマンド
cp: ファイルをコピー(リンクではなく独立したファイル)readlink: シンボリックリンクの参照先を表示stat: inode 番号やリンク数を確認
備考
- ハードリンク
- 同じ inode を参照するため、リンク先が削除されても他のリンクからアクセス可能。
- ディレクトリには通常作成できない(管理が複雑になるため)。
- 異なるファイルシステム間では作成不可。
- シンボリックリンク
- ファイルパスを参照する仕組み。
- 元ファイルが削除されると「壊れたリンク(broken link)」になる。
- ディレクトリや他のファイルシステムをまたいでも作成可能。
- 設定ファイルの切り替えやライブラリ参照先の管理にシンボリックリンクがよく使われます。
参考
- manページ: man7.org ln(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/

コメント