カテゴリ: Linuxコマンド集 更新日: 2026/04/24

realpath -mオプションの使い方を解説!Linuxで存在しないファイルも正規化して絶対パスを取得する方法

realpath -mオプション|存在しないファイルでもパスを正規化して表示する
realpath -mオプション|存在しないファイルでもパスを正規化して表示する

先生と生徒の会話形式で理解しよう

生徒

「先生、Linuxでrealpathコマンドを使ってパスを確認してたら、存在しないファイルでも絶対パスが出てきたんですけど、それって大丈夫なんですか?」

先生

「はい、実はrealpathにはそういう動きをするオプションがあります。特に-mオプションを使うと、存在しないファイルでも“正規化”して絶対パスとして返してくれますよ。」

生徒

「“正規化”ってなんですか?難しそう…」

先生

「大丈夫!簡単な言葉で言うと“整理してきれいな形にする”ってことです。それでは、実際の使い方をわかりやすく見ていきましょう!」

1. realpathコマンドと正規化とは?

1. realpathコマンドと正規化とは?
1. realpathコマンドと正規化とは?

realpath(リアルパス)コマンドは、Linuxでファイルやディレクトリの絶対パス(すべての階層を含む完全なパス)を表示するためのコマンドです。

このとき、「正規化(せいきか)」とは、無駄な記号(例:...)を取り除いて、整理された形のパスに変換する処理のことを言います。

-mオプションは、存在していないファイルやディレクトリでもこの“整理された絶対パス”を返してくれるのが特徴です。

2. -mオプションの基本的な使い方

2. -mオプションの基本的な使い方
2. -mオプションの基本的な使い方

-m--canonicalize-missingという長い名前の省略形です。どちらも同じ機能ですが、短い-mの方がよく使われます。

次のようなコマンドを実行してみましょう。


realpath -m ./docs/../notes/new.txt
/home/user/notes/new.txt

この例では、./docs/../notes/new.txtという「ややこしいパス」を、無駄な部分を取り除いてスッキリとした形に変換しています。

そして、このファイルnew.txtはまだ存在していなくても、realpath -mは絶対パスを返してくれます。

3. 存在しないファイルを指定した場合の動作

3. 存在しないファイルを指定した場合の動作
3. 存在しないファイルを指定した場合の動作

以下のように、実在しないファイルを指定してもエラーにはなりません。


realpath -m /home/user/missing/file.txt
/home/user/missing/file.txt

このとき、file.txtmissingディレクトリも実在していなくても構いません。

ファイルが実際にあるかどうかに関係なく、正規化されたパスが返ってくるのが-mオプションの特徴です。

4. -eオプションとの違いを理解しよう

4. -eオプションとの違いを理解しよう
4. -eオプションとの違いを理解しよう

-e(もしくは--canonicalize-existing)は、存在するファイル・ディレクトリのみを対象にします。

一方、-mは存在しなくても構いません。


realpath -e /tmp/abc.txt
realpath: '/tmp/abc.txt' を解決できません: そのようなファイルやディレクトリはありません

realpath -m /tmp/abc.txt
/tmp/abc.txt

このように、柔軟にパスを扱いたいときは-m、安全第一でいきたいときは-eという使い分けができます。

5. スクリプトでの活用シーン

5. スクリプトでの活用シーン
5. スクリプトでの活用シーン

-mオプションは、以下のような場面でとても便利です。

  • まだ作られていないファイルのパスを事前に確認したいとき
  • ログファイルの出力先パスを整形しておきたいとき
  • ユーザー入力の相対パスをきれいな絶対パスに変換したいとき

以下は、ファイル作成予定のパスを確認する例です。


newfile=$(realpath -m ./output/new_log.txt)
echo "ファイルを作成予定のパス:$newfile"

これで、new_log.txtがまだ無くても、安全にフルパスを準備できます。

6. 他のrealpathオプションとの併用は?

6. 他のrealpathオプションとの併用は?
6. 他のrealpathオプションとの併用は?

realpathには他にも便利なオプションがありますが、-mとは併用できないオプションもあります。

  • -eとの併用 → 不可(機能が真逆)
  • -s(シンボリックリンクを解決しない)→ 使用可

たとえば、-m-sを組み合わせて、シンボリックリンクを無視してパスだけを整える使い方もあります。


realpath -m -s ./some_symlink/file.txt
/home/user/some_symlink/file.txt

このように、-mは正規化処理が中心なので、他のオプションと組み合わせるときは目的を明確にすることが大切です。

まとめ

まとめ
まとめ

realpath -mの基本と重要なポイント

realpathコマンドの中でも特に-mオプションは、Linuxにおけるパス操作の柔軟性を大きく高めてくれる重要な機能です。通常のrealpathは、実在するファイルやディレクトリを前提として絶対パスを取得しますが、-mオプションを使用することで、存在しないファイルであっても正規化された絶対パスを取得することが可能になります。

これはシェルスクリプトや自動化処理において非常に有効であり、特にログファイルの出力先や、これから生成するファイルの保存先を事前に整理しておきたい場面で大きな効果を発揮します。パスの正規化とは、ドットやドットドットなどの冗長な記述を取り除き、シンプルで一意に解釈できるパスへと変換する処理を指します。

実務で役立つ使いどころ

実際の開発現場では、ユーザー入力による相対パスの処理や、複雑に組み合わされたディレクトリ構造の整理が頻繁に発生します。そのようなときにrealpath -mを活用することで、想定外のパス解釈ミスを防ぎ、安定した動作を実現することができます。

また、存在チェックを行わずにパスを整形できるため、事前準備の段階でも安心して利用できる点が大きなメリットです。これは特にバッチ処理やバックアップ処理、ログ管理スクリプトなどで重宝されます。

サンプルコードで理解を深める

以下は、存在しないディレクトリを含むパスを正規化し、変数に格納するシンプルな例です。Linuxコマンドの基本としても覚えておくと便利です。


path=$(realpath -m ./data/../logs/app.log)
echo $path
/home/user/logs/app.log

このように、存在していないlogsディレクトリやapp.logファイルであっても、問題なく整理された絶対パスを取得できます。スクリプト内でパスを統一的に扱うための基本テクニックとして覚えておきましょう。

-eオプションとの使い分け

realpathコマンドには-eオプションも存在しますが、こちらは実在するファイルのみを対象とするため、用途が大きく異なります。安全性を重視する場合は-e、柔軟性や事前処理を重視する場合は-mを選択するという使い分けが重要になります。

この違いを理解しておくことで、エラー回避や意図しない動作の防止につながり、より信頼性の高いスクリプトを作成できるようになります。

Linuxコマンド学習としての重要性

realpath -mの理解は、単なるコマンド知識にとどまらず、Linuxにおけるファイルシステムの構造理解にもつながります。絶対パスと相対パスの違いや、ディレクトリ階層の扱いをしっかり理解することで、より高度なシェルスクリプトやシステム運用にも対応できるようになります。

初心者の方でも、このような基本コマンドを丁寧に理解していくことで、着実にスキルを積み上げていくことができます。特に実務で役立つコマンドとして、realpathは優先的に習得しておきたい内容のひとつです。

先生と生徒の振り返り会話

生徒

realpath -mを使うと、存在しないファイルでも絶対パスが取得できるっていうのが一番印象に残りました。最初はちょっと不思議でしたけど、正規化っていう考え方で理解できました。

先生

そうですね。パスを整理して扱うという考え方は、Linuxではとても重要です。特にスクリプトを書くときには、入力されたパスがどんな形でも正しく処理できるようにする必要があります。

生徒

-eオプションとの違いも理解できました。存在確認をするかしないかで使い分けるんですね。

先生

その通りです。目的によってオプションを選ぶことが大切です。今回のように、まだ作られていないファイルのパスを扱う場合は-mが最適ですね。

生徒

実際の開発でも使えそうなので、今度スクリプトを書くときに使ってみます。

先生

ぜひ試してみてください。こうした基本コマンドをしっかり使いこなせるようになると、Linuxの操作が一気に効率化されますよ。

関連記事:
カテゴリの一覧へ
新着記事
New1
テキスト・データ処理
patch -Rオプションの使い方を完全ガイド!初心者でもわかるLinuxでパッチを元に戻す方法
New2
テキスト・データ処理
less -Xオプションの使い方を完全ガイド!終了後も画面内容を残す方法
New3
ファイル・ディレクトリ操作
lsコマンドの-lオプションでファイルの詳細情報を一覧表示しよう!初心者でもわかる使い方と意味を徹底解説
New4
ディスクとファイルシステム管理
dfコマンドの使い方を完全ガイド!初心者でもわかるLinuxのディスク使用量確認方法
人気記事
No.1
Java&Spring記事人気No1
テキスト・データ処理
catコマンドとは?Linuxでファイル内容を表示・連結する基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
pwdコマンドとは?初心者でもわかる現在の作業ディレクトリの確認方法を解説!
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
lsコマンドとは?Linuxでファイルやディレクトリを一覧表示する基本を初心者向けに解説