realpathコマンドとは?Linuxでシンボリックリンクを解決して絶対パスを表示する基本
生徒
「Linuxでファイルの場所を調べたいときに、realpathっていうコマンドがあるって聞いたんですけど、何をしてくれるんですか?」
先生
「realpathコマンドは、ファイルの本当の場所、つまり絶対パスを表示してくれるんですよ。シンボリックリンクが使われていても、それをたどって本当のパスを教えてくれます。」
生徒
「シンボリックリンクってなんですか? 難しそう…」
先生
「大丈夫です。実際にはとてもシンプルな考え方ですから、一緒に分かりやすく見ていきましょう!」
1. realpathコマンドとは?
realpath(リアルパス)コマンドは、Linuxで指定したファイルやディレクトリの絶対パス(どこにあっても一意に示せる完全なパス)を表示するためのコマンドです。
Linuxでは、ファイルの場所を「相対パス」と「絶対パス」で指定できますが、realpathはその中でも絶対パスを明確に表示してくれるので、迷子になりにくくなります。
2. シンボリックリンクとは何かを理解しよう
シンボリックリンクとは、簡単に言えば「ショートカット」のようなものです。Windowsで見かける「近道アイコン」と同じようなもので、別のファイルやディレクトリを指し示す特別なファイルです。
シンボリックリンクがあると、見た目は別の場所にファイルがあるように見えても、実際には違う場所のものを参照している、ということがあります。
このときrealpathを使えば、リンク先の本当の場所を知ることができます。
3. realpathコマンドの基本的な使い方
以下のようにrealpathコマンドにファイル名を指定すると、そのファイルの絶対パスを表示してくれます。
realpath sample.txt
/home/user/documents/sample.txt
この例では、カレントディレクトリにあるsample.txtというファイルの本当の場所が表示されています。
4. シンボリックリンクを使った例
たとえば、以下のようにシンボリックリンクを作成してみます。
ln -s /etc/hosts myhosts
このコマンドで、/etc/hostsへのリンクがmyhostsという名前で作られます。では、これに対してrealpathを実行してみましょう。
realpath myhosts
/etc/hosts
このように、myhostsというリンクの本当の参照先、つまり/etc/hostsが表示されます。これがrealpathの便利なポイントです。
5. 相対パスから絶対パスを取得する例
カレントディレクトリにあるファイルやディレクトリを相対パスで指定していても、realpathを使えば、それがどこにあるか一発でわかります。
realpath ../pictures/photo.jpg
/home/user/pictures/photo.jpg
このように、..(親ディレクトリ)などを含むパスでも、きれいな形に整えてくれます。
6. よくある用途や活用場面
realpathコマンドは、以下のような場面で非常に役立ちます。
- シンボリックリンクの先が本当に存在しているか確認したいとき
- スクリプトなどで正確なパスが必要なとき
- 相対パスから絶対パスに変換したいとき
特に、複数人で作業するプロジェクトでは、相対パスのままでは動かないこともあるので、realpathで正確なパスを使うのは安心です。
7. basenameやdirnameとの違い
realpathは「絶対パスを得る」ためのコマンドですが、似たような名前のbasenameやdirnameもよく使われます。
realpath→ 絶対パスを出力basename→ ファイル名だけ抽出dirname→ ディレクトリ部分だけ抽出
例で比較してみましょう。
realpath ./project/main.py
/home/user/project/main.py
basename ./project/main.py
main.py
dirname ./project/main.py
./project
このように、出力される内容が異なるので、それぞれの用途に応じて使い分けることが大切です。