シンボリックリンク先のディレクトリで、実際のパス(physical path)を得る方法
目次
~/dir1/dir2/dir3
というディレクトリがあり、このディレクトリへのシンボリックリンク link
が ~
直下にある状態にあるとする。
※以下のコマンドを入れた状態
$ cd ~
$ mkdir -p dir1/dir2/dir3
$ ln -s dir1/dir2/dir3 link
カレントディレクトリの実際のパスを得る
普通に pwd
しても、シンボリックリンクを通したパスが表示される。
$ cd ~/link
$ pwd
~/link
実際のパス(physical path)を得たい場合、-P
オプションを付ければよい( pwd --help
を参照)。
$ cd ~/link
$ pwd -P
~/dir1/dir2/dir3
実際のパスでディレクトリを移動する
この -P
オプションは cd
コマンドにもある( cd --help
を参照)。そのため、cd -P .
で実際のパスに移動することができる。
$ cd ~/link
$ pwd
~/link
$ cd -P ~/link
$ pwd
~/dir1/dir2/dir3
シンボリックリンク先で、実際のパスにおける親ディレクトリに移動する
シンボリックリンクのリンク先( ~/link
)から cd ..
としてもリンク元( ~
)に戻ってきてしまう。
$ cd ~/link/..
$ pwd
~
cd -P ..
とすることで、リンク先の実際のパス( ~/dir1/dir2/dir3
)における親ディレクトリ( ~/dir1/dir2
)に移動することができる。
$ cd -P ~/link/..
$ pwd
~/dir1/dir2