はじめに

こんにちは!今回はlnコマンドについて解説します。

lnはハードリンク・シンボリックリンク(シムリンク)を作成するコマンドです。ファイルへのショートカットを作ったり、複数の場所から同じファイルにアクセスしたりできます。

基本的だけど、理解する必要があるコマンド。リンク機構が分かるとLinuxがより深く理解できます。


lnコマンドとは

lnは、ファイルやディレクトリへのリンクを作成する外部コマンドです。Linuxのファイルシステムではリンクが重要な仕組みです。

ハードリンク(同じファイルへの複数の参照)とシンボリックリンク(ショートカット)の2種類があります。それぞれ異なる特性を持っています。


基本構文

1
ln [オプション] リンク元ファイル リンク先

デフォルトはハードリンク。シンボリックリンクには-sオプションを指定。


主なオプション

オプション 説明
-s シンボリックリンクを作成
-i 上書き前に確認
-f 既存ファイルを上書き
-v 詳細表示
-d ハードリンク(特殊)
-b バックアップを作成

使用例

例1: ハードリンクを作成

1
ln file.txt link_to_file.txt

実行結果:

1
(成功時は何も表示されない)

ハードリンクで別の名前から同じファイルにアクセス。

例2: シンボリックリンクを作成

1
ln -s /var/log/syslog ~/syslog_link

実行結果:

1
(成功時は何も表示されない)

ショートカットのような存在。元ファイルが削除されるとリンク切れに。

例3: ディレクトリへのシンボリックリンク

1
ln -s /home/user/projects ~/projects

実行結果:

1
(成功時は何も表示されない)

ディレクトリへのシンボリックリンク作成。

例4: 詳細表示で作成

1
ln -sv sourcefile newfile

実行結果:

1
'newfile' -> 'sourcefile'

作成されたリンクの情報を表示。

例5: 既存ファイルを上書き

1
ln -f oldfile newfile

実行結果:

1
(上書きしてリンク作成)

既存ファイルを強制的に上書き。

例6: lsでリンクを確認

1
ls -l

実行結果:

1
2
lrwxr-xr-x 1 user group 15 Jan 3 10:00 link -> file.txt
-rw-r--r-- 1 user group 100 Jan 3 10:00 file.txt

lで始まる行がシンボリックリンク。

例7: リンク元を確認

1
readlink ~/syslog_link

実行結果:

1
/var/log/syslog

シンボリックリンクの元ファイルを表示。

例8: ハードリンクの確認

1
ls -i file.txt link_to_file.txt

実行結果:

1
2
12345 file.txt
12345 link_to_file.txt

同じiノード番号 = ハードリンク。

例9: ディレクトリ内に複数のシンボリックリンク

1
2
cd /usr/local/bin
ln -s /opt/application/bin/myapp myapp

実行結果:

1
(myappコマンドでアクセス可能に)

PATHに含まれるディレクトリにシンボリックリンク。

例10: リンクチェーン(シンボリックリンクのシンボリックリンク)

1
2
ln -s actual_file link1
ln -s link1 link2

実行結果:

1
(link2→link1→actual_fileと遡って参照)

複数段階のリンク作成も可能。


Tips・注意点

ハードリンク vs シンボリックリンク

ハードリンク:

  • 同じiノード
  • 元ファイル削除後も有効
  • ディレクトリに不可(特殊オプンで可)

シンボリックリンク:

  • 別のiノード
  • パスの参照
  • 元ファイル削除でリンク切れ

相対パス vs 絶対パス

1
2
ln -s ../file relative_link   # 相対パス
ln -s /absolute/path/file absolute_link  # 絶対パス

相対パスは移動に強い。

リンク切れの確認

1
find . -xtype l  # リンク切れを見つける

シンボリックリンクの削除

1
2
rm symlink  # シンボリックリンクだけ削除
# 元ファイルは残る

実践的な使い方

アプリケーションのセットアップ

1
ln -s /opt/java/jdk1.8.0_latest /usr/local/java

バージョン更新時にリンクを張り替えるだけで完了。

ホームディレクトリからのアクセス

1
ln -s /mnt/large_data ~/data

大容量マウントへの短いパスを作成。

設定ファイルのバージョン管理

1
2
ln -s configs/production.conf config.conf
ln -s configs/development.conf config.conf

環境に応じてリンク先を変更。

ログファイルへのアクセス

1
ln -s /var/log/app.log ~/app_log

頻繁にアクセスするログへのショートカット。


まとめ

lnコマンドのポイント:

  • ハードリンク: 同じファイルへの複数参照(デフォルト)
  • シンボリックリンク: ショートカット(-sオプション)
  • -s: シンボリックリンク作成
  • -i: 上書き前に確認
  • -v: 詳細表示
  • -f: 既存ファイルを上書き
  • よく使う組み合わせ: ln -s, ln -sv

リンク機構はLinuxの重要な概念。ハードリンクとシンボリックリンクの違いをしっかり理解すると、より効率的なシステム管理ができますよ!