readlinkコマンドでフルパスを表示出来るらしい

はじめに

ファイルの絶対パスが知りたい時どう取得していますか。pwdlsを組み合わせておいででしょうか。
何を隠そう自分が正にその一人でしたが、調べてみると良い方法がありましたのでまとめておきます。

readlinkコマンド

方法から先に載せます。

$ readlink -f fileA
/home/centos/fileA

どういう理屈かと言いますと、readlinkコマンドはシンボリックリンクのリンク先を表示するコマンドです。

$ ln -s fileA linkA
$ ls -l
-rw-rw-r--. 1 centos centos 10 Mar 14 07:50 fileA
lrwxrwxrwx. 1 centos centos  5 Mar 14 07:50 linkA -> fileA
$ ln -s linkA linkB
$ ls -l
-rw-rw-r--. 1 centos centos 10 Mar 14 07:50 fileA
lrwxrwxrwx. 1 centos centos  5 Mar 14 07:50 linkA -> fileA
lrwxrwxrwx. 1 centos centos  5 Mar 14 07:52 linkB -> linkA
$ readlink linkB
linkA
$ readlink -f linkB
/home/centos/fileA

一息で-fオプションまで実行してしまいましたが、

  • linkA→fileA
  • linkB→linkA

上の様なリンク関係となっています。この状況でreadlink linkBを実行するとlinkAを返し、
readlink -f linkBを実行するとfileAを返します。つまり-fオプションは再帰的に対象シンボリックリンクのリンク先を探すオプションです。

まとめ

最初のコマンドでは対象にシンボリックリンクではなく通常のファイルを指定しています、だからリンク先の自分自身が表示されたという事になります。
と思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA