The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Linuxでシンボリックリンクを作るには、ln -s TARGET LINK_NAMEを実行します。削除するときはリンク名を指定してrm LINK_NAMEまたはunlink LINK_NAMEを使います。リンクを削除しても参照先のファイルやディレクトリは削除されません。
シンボリックリンクを作成する
基本のコマンドは次のとおりです。
ln -s TARGET LINK_NAME
TARGETはリンク先のパス、LINK_NAMEは新しく作るシンボリックリンクの名前です。GNU lnは通常ハードリンクを作成するため、シンボリックリンクにするには-s(長形式は--symbolic)を付けます。2つの引数を使う形式では、先にリンク先、次にリンク名を指定します。GNU Coreutilsのlnマニュアル
As an Amazon Associate I earn from qualifying purchases.
ln -s /path/to/target my-link
この例では、現在のディレクトリにmy-linkというリンクを作り、/path/to/targetを参照させます。リンク名がすでに存在する場合、通常はそのまま作成できません。
絶対パスと相対パスを使い分ける
シンボリックリンクは、別のファイルへのパス名を文字列として保持します。Linux man-pagesのsymlink(7)も、シンボリックリンクを「参照先ファイルのパス名を内容とする特殊なファイル」と説明しています。Linux man-pages: symlink(7)
#1 Best Overall
- 絶対パス:ファイルシステムのルートから始まります。リンクをどのディレクトリから使っても参照先が明確ですが、参照先の場所が変わるとリンク切れになります。
- 相対パス:リンクが置かれたディレクトリを基準に解決されます。ディレクトリ構成をまとめて移動する場合に便利なことがありますが、リンクを移動すると参照先が変わったり、解決できなくなったりする場合があります。
相対パスを指定するときは、コマンドを実行した場所ではなく、リンクの親ディレクトリから参照先までの相対関係を考えます。GNU lnでは-rを使って相対リンクを作成できます。
ln -r -s TARGET LINK_NAME
シンボリックリンクはディレクトリを参照でき、別のファイルシステム上のパスも参照できます。リンク作成時に参照先が存在している必要はありません。存在しないパスを指すリンクは「ダングリングシンボリックリンク」と呼ばれます。Linux man-pages: symlink(2)
シンボリックリンクを安全に削除する
削除するのはリンク自体です。リンク名を引数にして、どちらかのコマンドを実行します。
Recommended Free Tools
rm LINK_NAME
または、1つの名前を削除するunlinkを使います。
Rank #3
unlink LINK_NAME
Linuxのunlink(2)はファイルシステム上の名前を取り除きます。指定した名前がシンボリックリンクなら、リンクが削除され、リンク先をたどって参照先を削除することはありません。GNUのunlinkコマンドも、指定された1つのファイル名を削除します。Linux man-pages: unlink(2) GNU Coreutilsのunlinkマニュアル
コマンドには必ずリンク名を指定してください。参照先のパスを指定して削除すると、リンクではなく参照先のファイルを削除することになります。また、ディレクトリを指すリンクを削除するときは、リンク名の末尾にスラッシュを付けないでください。末尾のスラッシュはディレクトリとして解決するよう求めることがあり、リンクそのものを削除する操作と食い違う可能性があります。
リンクが機能しないときに確認すること
- リンク先の文字列:意図したパスが保存されているか確認します。
- 相対パスの基準:リンクの親ディレクトリを起点に参照先をたどれているか確認します。
- 参照先の有無:作成時に参照先がなくてもリンクは作れますが、その場合は参照先を利用できません。
- リンクの移動:相対リンクを移動した場合、参照先との位置関係が崩れていないか確認します。
シンボリックリンクとハードリンクの違い
ln TARGET LINK_NAMEのように-sを付けないと、GNU lnはハードリンクを作成します。シンボリックリンクはパス名を保持し、ディレクトリや別ファイルシステム上のパスを参照できます。一方、ハードリンクはファイルシステム上のファイルオブジェクトを参照するもので、作成できる対象や範囲に異なる制約があります。必要なのがパスへの参照なら、-sを忘れないようにしてください。GNU Coreutilsのlnマニュアル Linux man-pages: symlink(7)
Quick Recap
Best Value
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

