シンボリックリンク先のディレクトリで、実際のパス(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
fiore
fiore

自称C++er。