Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

ln

『ln』はファイルへのリンクを作成するコマンドです。同じファイルに複数の名前をつける「ハードリンク」と、別のパスへの参照を作る「シンボリックリンク(ソフトリンク)」の2種類があります。

構文
ln [オプション] リンク元 リンク名
オプション一覧
オプション概要
ln リンク元 リンク名ハードリンクを作成します。同じファイルシステム内のファイルのみ対象です。
ln -s リンク元 リンク名シンボリックリンクを作成します。ディレクトリや別ファイルシステムも対象にできます。
ln -f リンク元 リンク名リンク名がすでに存在する場合は強制的に上書きします。
ln -n リンク元 リンク名リンク名がシンボリックリンクである場合、その先をたどらずに置き換えます。
ln -v リンク元 リンク名作成したリンクの情報を表示します(verbose)。
サンプルコード

以下のディレクトリ構造を例に説明します。

📁 ~/project/ 📁 config/ 📄 settings.conf 📄 original.txt

ファイルへのシンボリックリンクを作成します。

ln -s original.txt link.txt
ls -l link.txt
lrwxrwxrwx 1 user staff 12 Mar  5 10:00 link.txt -> original.txt

ディレクトリへのシンボリックリンクを作成します。

ln -s /var/www/html /home/user/www
ls -l /home/user/www
lrwxrwxrwx 1 user staff 13 Mar  5 10:00 /home/user/www -> /var/www/html

パスの通った場所にシンボリックリンクを作り、コマンドをどこからでも実行できるようにします。

ln -s /usr/local/bin/node /usr/bin/node

ハードリンクを作成します。同じ inode 番号になるため、どちらのファイル名からでも同じデータにアクセスできます。

ln original.txt hardlink.txt
ls -i original.txt hardlink.txt
123456 hardlink.txt
123456 original.txt

既存のリンクを強制的に上書きします。

ln -sf config/settings.conf link.txt
ls -l link.txt
lrwxrwxrwx 1 user staff 21 Mar  5 10:05 link.txt -> config/settings.conf
概要

シンボリックリンクはリンク元ファイルが削除されると「壊れたリンク(dangling symlink)」になります。一方ハードリンクはリンク元を削除してもデータが残ります(参照カウントが0になるまで実体は消えません)。

シンボリックリンクはディレクトリにも作成できますが、ハードリンクはディレクトリには作れません(通常のユーザーの場合)。ファイルのパーミッション変更は『chmod / chown / chgrp』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。