Linuxコマンド readlink(シンボリックリンク先を表示する)
シンボリックリンクのリンク先ファイル名を表示するコマンドについて解説。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
参考サイト:Man page of INSTALL
使用方法
シンボリックリンクの指し示す先を標準出力に出力します。
書式
$ readlink [オプション] ファイル名
-f, –canonicalize | シンボリックリンク先を再帰的に調べる |
-e, –canonicalize-existing | シンボリックリンク先が存在するかを調べる |
-m, –canonicalize-missing | シンボリックリンク先が存在しないかを調べる |
-n, –no-newline | 出力後に改行しない |
-z, –zero | 改行ではなくNULL文字を付加する |
-q, –quiet, -s, –silent | エラーメッセージを表示しない |
サンプル
$ readlink sample
実行結果
[centos@ work]$ tree
.
├── sample -> sample1/sample.txt
└── sample1
└── sample.txt
1 directory, 2 files
[centos@ work]$ readlink sample
sample1/sample.txt
シンボリックリンクのリンク先を最後まで辿る。
-fオプションを使用することにより、シンボリックリンクのリンク先を再帰的に辿ることができる。
サンプル
$ readlink -f sample
実行結果
[centos@ work]$ tree
.
├── sample -> sample1/sample.txt
└── sample1
└── sample.txt
1 directory, 2 files
[centos@ work]$ ln -s sample sample2 ←シンボリックリンクに対して、シンボリックリンクを作成する。
[centos@ work]$ tree
.
├── sample -> sample1/sample.txt
├── sample1
│ └── sample.txt
└── sample2 -> sample ←treeコマンドでは、実態まで辿ることができない。
1 directory, 3 files
[centos@ work]$ readlink -f sample2 ←readlink -f で実態まで再帰的に辿ることができる。
/home/centos/work/sample1/sample.txt
[centos@ work]$
リンク先の存在を確認する
-eオプションを使用することにより、シンボリックリンクのリンク先にファイルが存在するか確認できる。
サンプル
$ readlink -e sample
実行結果
[centos@ work]$ tree
.
├── sample -> sample1/sample.txt
├── sample1
└── sample2 -> sample
1 directory, 2 files
[centos@ work]$ readlink -e sample ; echo $?
/home/centos/work/sample1/sample.txt ←ファイルが存在しているため、ファイルパスを返す。
0 ←ファイルが存在するため0を返す。
[centos@ work]$ rm sample1/sample.txt #実態のファイルを削除する。
[centos@ work]$ readlink -e sample ; echo $?
1 ←ファイルが存在しないため1を返す。
[centos@ work]$