lnコマンドを調べる中で学んだこと
ln コマンドとは,ファイルやディレクトリに対してリンクを作成するコマンドである.
- リンクを作成?リンクとは?
- 作成してどうする?
イメージがわかなかったので,調べてみた.その過程のメモ.
リンク
リンクを作成することで,そのリンクから大元のファイルにアクセスすることができる.ハードリンクとシンボリックリンクの二種類あるうちのシンボリックリンクを主に使うとのこと.(よってハードリンクとシンボリックリンクの違いは触れない.)
リンクを作成する目的
- パス名が長いファイルやディレクトリに簡単にアクセスできる
- ファイルパスを維持しながらファイルを更新できる
- 同じ役割のファイルの重複を防ぐ
後半の二つについて,詳しく説明する.
ファイルパスを維持しながらファイルを更新できる
例えば,あるライブラリファイルを参照するシンボリックリンクがあるとする.ここでは,その大元のライブラリファイルをアップデートするケースを考える.
大元のライブラリファイル(lib_ver1.0.txt)を作成する.
echo "ver1.0の内容です" > lib_ver1.0.txt
大元のライブラリファイルに対してシンボリックリンク(lib.txt)を作成する.
ln -s lib_ver1.0.txt lib.txt
リンクにアクセスすると,大元のライブラリファイルにアクセスできることを確認する.
cat lib.txt // "ver1.0の内容です"と表示される
アップデートされたライブラリファイル(lib_ver1.1.txt)を作成する.
echo "ver1.1の内容です" > lib_ver1.1.txt
シンボリックリンクを更新する.古いリンクを削除し,新しいライブラリファイルに対して新しいシンボリックリンクを作成する.
rm lib.txt ln -s lib_ver1.1.txt lib.txt
リンクにアクセスすると,新しいライブラリファイルにアクセスできることを確認する.
cat lib.txt // "ver1.1の内容です"と表示される
このように,ファイルパスを一貫させたままライブラリのバージョンを更新できる.
同じ役割のファイルの重複を防ぐ
想定シナリオとして,プロジェクトで共通の設定ファイルを複数の場所で使用する場合を考える.
共通の設定ファイル common-config.txt が /project/config/ ディレクトリにある.
プロジェクトの異なるサブプロジェクトでこの設定ファイルを使用したい場合,各サブプロジェクトのディレクトリにシンボリックリンクを作成する.
ln -s /project/config/common-config.txt /project/subproject1/config.txt ln -s /project/config/common-config.txt /project/subproject2/config.txt
これにより,common-config.txt の内容を更新するとサブプロジェクトのディレクトリにあるリンク経由で自動的に反映され,ファイルの重複を避けることができる.