MEMO REC

雑記帳兼php、mysql、html、css、javascript等の備忘録です。

【Linux】シンボリックリンクを作成/削除/コピーする方法

シンボリックリンクの作成方法、削除(解除)方法を記しておきます。

シンボリックリンクとは?

シンボリックリンク(Symbolic LinkまたはSymlink)は、ファイルやディレクトリへのエイリアス(別名)を作成するための仕組みです。シンボリックリンクは、ファイルパスやディレクトリパスを参照し、そのパスにアクセスすることで、実際のファイルやディレクトリにアクセスできるようにします。シンボリックリンクは、ファイルシステム内での異なる場所間でのリンクを可能にし、ディレクトリやファイルの再配置や管理を容易にします。

シンボリックリンクの作成

シンボリックリンクの作成は、lnコマンドを使用します。以下が基本的な構文です。
※ちなみにlnはLinkの略らしい。

ln -s リンク元のパス リンクのパス

例えば、/hoge/fuga ディレクトリに fuga_link というシンボリックリンクを作成する場合、次のように行います。

# ln -s /hoge/fuga fuga_link

lsコマンドで確認すると下記の様に表示されます。

# ls -trla
lrwxrwxrwx 1 root root   10 Aug  1 12:34 fuga_link -> /hoge/fuga/

リンク元と同名でいい場合

 ln -s /hoge/fuga

その他のオプション

-nオプション:同名のリンクが既に存在する場合、エラーを表示して上書きを防ぎます。

ln -s -n リンク元のパス リンクのパス

-fオプション:同名のリンクが既に存在する場合、上書きして新しいシンボリックリンクを作成します。

ln -s -f リンク元のパス リンクのパス

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

シンボリックリンクの削除(解除)は、unlinkコマンドを使用します。

unlink fuga_link

シンボリックリンクをコピーする

シンボリックリンクのコピーは、通常のファイルコピーとは異なる点に注意が必要です。シンボリックリンクの参照先をコピーするために、-dオプションを使用します。

以下はシンボリックリンクのコピーの例です。

cp -d fuga_test.txt fuga_test2.txt

「-d」オプションを省略してコピーすると、参照先のファイルがコピーされます。

# cp fuga_test.txt fuga_test2.txt
# ls -trla
lrwxrwxrwx 1 root root   18 Aug  10 12:34 fuga_test.txt -> /tmp/hoge/test.txt
-rw-rw-rw- 1 root root    2 Aug  10 12:34 fuga_test2.txt

「-d」オプションを指定してコピーすると、シンボリックリンク自体がコピーされます。

# cp fuga_test.txt fuga_test2.txt
# ls -trla
lrwxrwxrwx 1 root root   18 Aug  10 12:34 fuga_test.txt -> /tmp/hoge/test.txt
lrwxrwxrwx 1 root root   18 Aug  10 12:35 fuga_test2.txt -> /tmp/hoge/test.txt