概要
シンボリックリンクが指している文字列や、条件に応じて解決後のパスを出力します。リンクが多い環境の調査で重要です。
基本構文
readlink [オプション]... ファイル詳細解説
readlinkは、シンボリックリンクが保持している参照先文字列を表示するコマンドです。単純にリンクファイルの中身を見たい時に最適で、実体に到達するかどうか、相対リンクか絶対リンクかを確認するのに役立ちます。
GNU実装では-fや-eなどを使って実体解決まで進めることもできます。ただし、この場合は「リンク文字列を読む」だけでなく「途中経路を解決する」動作になるため、単純な表示と正規化を区別して理解することが重要です。
実務では、設定切り替え先の確認、currentリンクの向き先確認、壊れたリンクの切り分け、デプロイ構成の把握などで使います。lnやrealpathと合わせて学ぶと理解が深まります。
このコマンドを使う場面
シンボリックリンクの向き先を確認したい時、デプロイ先のcurrentリンクを確認したい時、リンク切れの調査やパス解決の前段確認をしたい時に使います。
まず安全に試す方法
1. mkdir -p /tmp/readlink-demo && cd /tmp/readlink-demo
2. printf 'x
' > target.txt
3. ln -s target.txt link.txt
4. readlink link.txt
5. readlink -f link.txt
文字列としての参照先と、解決後の絶対パスの違いを確認してください。
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
シンボリックリンクを作成し、readlinkで保持文字列を確認します。
-
readlink -fで絶対パスへ解決されることを確認します。
実行結果サンプル
-
ln -s target.txt link.txt readlink link.txttarget.txt -
readlink -f link.txt/tmp/readlink-demo/target.txt
戻り値コード
- 0 正常終了。指定条件で結果を表示できました。
- >0 対象がリンクでない、存在しない、解決条件を満たさないなどで失敗しました。
使用例
readlink currentreadlink -f currentreadlink -e link.txt
よくあるエラー
-
リンク先の実体が欲しかったのに文字列だけ出た 原因: 通常のreadlinkは参照文字列をそのまま表示します。対処: 実体解決が必要なら-fや-eを使います。
-
readlink -eが何も返さない 原因: 途中要素か末尾要素が存在しません。対処: 存在しない経路も含めて扱うなら-mを検討し、実体確認を別途行います。
導入・互換性情報
readlinkはPOSIX標準の基本ユーティリティではなく、GNU拡張のオプション依存が強いコマンドです。-fや-e、-mの有無や意味は実装差に注意が必要です。
注意点 / セキュリティリスク
危険度は低いですが、-fや-eの結果を見て「常にその実体が使われている」と早合点しないことが大切です。相対リンクと実行時の基準位置も合わせて確認してください。
FAQ
-
Q. readlinkとrealpathの違いは何ですか。 A. readlinkはリンク文字列の確認にも向き、realpathは正規化された実体パス取得に向いています。
-
Q. 通常ファイルに対して使えますか。 A. 実装やオプションによりますが、リンクでない対象では期待する情報が得られないことがあります。
関連用語
参照リンク
- カテゴリー: File And Directory
- レベル: Basic