脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

シンボリックリンクの作成の仕方と、リンク先へcdで移動する際に直接本体へ行く方法

前回作成したこのディレクトリを利用します

$ ls -loR 1st_dir
1st_dir:
total 4
drwxrwxr-x 3 roma 4096 Jul 24 09:23 2nd_dir
・
・
・
1st_dir/2nd_dir/3rd_dir/4th_dir/5th_dir:
total 0

mkdirで存在しない途中のディレクトリも一緒に作成する方法 - 脳汁portal

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

コマンド
ln -s ${実際に存在するディレクトリ} ${今から作成するリンク}
  • sオプションはsymbolicのsです。(-s, --symbolic make symbolic links instead of hard links)
$ ln -s 1st_dir/2nd_dir/3rd_dir/4th_dir/5th_dir/ target_dir
$ ls -l
$ ll
total 24
drwxrwxr-x 3 root root 4096 Jul 24 09:23 1st_dir
lrwxrwxrwx 1 root root   40 Jul 24 09:31 target_dir -> 1st_dir/2nd_dir/3rd_dir/4th_dir/5th_dir/

削除するときも、普通にtarget_dirの方を消そうとすれば、「symbolic linkを消すかい?」って聞いてくれるので安心です。

$ rm -i target_dir
rm: remove symbolic link `target_dir'?

$ rm -i target_dir/ # これだとダメ
rm: cannot remove `target_dir/': Is a directory

シンボリックリンク先の本体へ移動する場合

日本語が不自由な感じになっていますが、上記の作ったシンボリックリンクに普通に移動すると以下のようになります。

$ cd target_dir/
$ pwd
/home/root/target_dir # "1st_dir/2nd_dir/3rd_dir/4th_dir/5th_dir"じゃない

# 4th_dirにあがりたくても、
$ cd ../
$ pwd
/home/root # あがれない・・・

こういうときは-Pオプションをつけて移動してあげればシンボリックリンクとしてではなく、直接参照先に飛べます

$ cd -P target_dir/
$ pwd
/home/roma/1st_dir/2nd_dir/3rd_dir/4th_dir/5th_dir # シンボリックリンクじゃない!

$ cd ../
$ pwd
/home/roma/1st_dir/2nd_dir/3rd_dir/4th_dir # 当然一階層あがれば4th_dir!!

単純なことですが、Tipsとして。。