はじめに
すごくシンプルで簡単にシンボリックリンクについてまとめました。
とりあえず、これだけ押さえておけば、ここで紹介する用途以外にシンボリックリンクを利用する際にも、問題なく理解が進むでしょう。
対象読者
シンボリックリンクという言葉を聞いたことはあるが、いまいちどういう場面で利用するのかイメージが湧かない方。
シンボリックリンクとは
ファイルの実体に直接名前をつけるのがハードリンク、
実体ではなく、ファイル名に対して間接的に名前をつけるのがシンボリックリンクです。
イメージとしては、
全てのファイルには名前がついており、本名と別名の2種類あった時に。
ファイルの本名がハードリンク、別名がシンボリックリンクといった感じです。
そのうち、ファイルやディレクトリを管理する際には、シンボリックリンクが活躍することが多く、それはファイルやディレクトリの代理人としての役回りをします。Windowsにおける「ショートカット」のUNIX系OSにおける呼び名のようなものです。
具体的な状況で理解しよう
データファイルはDocumentディレクトリの下に用途別に分けて管理し、よく使うファイルだけはDesktopにショートカットを置いておく、という使い方はGUI環境ではお馴染みですよね。ショートカットは近道をいう名前の通り、目的のファイルへのパスが入っており、CUIの環境ではそれを、シンボリックリンクで実現しようということです。
作成
❯ ln -s Document/projects/projectX/data02.txt ./latest
もしくは
❯ ln -s Document/projects/projectX/data02.txt latest
あるいは、同じ名前で作成したい場合、第二引数は省略して良い。
(ここでは、latestという名前ではなく、data02.txtという名前のリンクが作成される)
❯ ln -s Document/projects/projectX/data02.txt
削除
❯ unlink latest
ディレクトリにシンボリックリンクを作成(主な用途)
主な用途に、ディレクトリにシンボリックリンクを作成することがあります。
プロジェクトの進行中など、ディレクトリの奥深くに目的ディレクトリがある場面は多いと思います。長期にわたってのプロジェクトなどは、毎回作業前にディレクトリへ移動するのは、地味に手間がかかるものです。その際、ディレクトリにシンボリックリンクを作成すると、移動の手間が省け、いくぶん楽になるのでおすすめです。
// 奥深いプロジェクト
❯ ls Document/projects/projectX
data01.txt data02.txt
// シンボリックリンク作成
❯ ln -s Document/projects/projectX
// 簡単アクセス
❯ ls projectX
data01.txt data02.txt
注: 上記の場合、同じ名前で作成したいので、第二引数は省略しています。
補足(オプション)
オプション | 意味 |
---|---|
-s (--symbolic) | シンボリックリンクを作成する |
-f (--force) | すでに登録名が登録されたものであった場合、強制的に上書きする |
-i (--interactive) | すでに登録名が登録されたものであった場合、上書き前に確認する |
-v (--verbose) | リンクを登録する際、登録する登録名とリンク先を表示する |
-b (--backup) | すでに登録名が登録されたものであった場合、元々のリンクをバックアップし新規にリンクを登録する |