web-dev-qa-db-ja.com

bashでシンボリックリンクを逆参照するにはどうすればよいですか?

どのようにしてbashの特定のパスを取得し、それを正規の形式に変換して、パス内に含まれている可能性のあるシンボリックリンクを逆参照できますか?

例えば:

~$ mkdir /tmp/symtest
~$ cd /tmp/symtest/
/tmp/symtest$ mkdir -p foo/bar cat/dog
/tmp/symtest$ cd foo/bar/
/tmp/symtest/foo/bar$ ln -s ../../cat cat
/tmp/symtest/foo/bat$ cd ../../
/tmp/symtest$ tree
.
|-- cat
|   `-- dog
`-- foo
    `-- bar
       `-- cat -> ../../cat

6 directories, 0 files

/tmp/symtest/foo/bar/catの完全な正規パスを取得するにはどうすればよいですか(つまり、/tmp/symtest/cat)?

43
David Dean

Andy Skelton のおかげで、答えはreadlink -f

$:/tmp/symtest$ readlink -f /tmp/symtest/foo/bar/cat
/tmp/symtest/cat
60
David Dean