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

realpath --canonicalize-existingオプションの使い方を解説!Linuxで既存パスだけ絶対パス化する方法

realpath --canonicalize-existingオプション|-eと同じ挙動で既存パスだけ処理する
realpath --canonicalize-existingオプション|-eと同じ挙動で既存パスだけ処理する

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

生徒

「Linuxでrealpathコマンドを使って絶対パスを取得してるんですが、間違ったパスでも普通に表示されてしまって困っています…」

先生

「それはrealpathの仕様なんですが、実在するパスだけを対象にしたい場合には--canonicalize-existingというオプションを使うといいですよ。」

生徒

「あ、それって-eと同じでしたっけ?」

先生

「その通りです。実は--canonicalize-existing-eの正式名称なんです。では、使い方を詳しく見てみましょう!」

1. realpathコマンドとは?

1. realpathコマンドとは?
1. realpathコマンドとは?

realpath(リアルパス)コマンドは、Linuxでファイルやディレクトリの絶対パスを表示するために使われるコマンドです。シンボリックリンク(ショートカットのようなもの)を解決して、本当に存在する場所(フルパス)を出力してくれます。

しかし、通常のrealpathでは、まだ存在しないファイルのパスでも絶対パスとして表示されてしまうため、間違ったパスでも結果が出てしまうという問題があります。

2. --canonicalize-existingオプションとは?

2. --canonicalize-existingオプションとは?
2. --canonicalize-existingオプションとは?

--canonicalize-existingオプションは、指定したファイルやディレクトリが本当に存在している場合にのみ、その絶対パスを表示するようにするためのものです。

このオプションを使うことで、タイプミスや削除されたパスなど、存在しないファイルを誤って処理してしまうリスクを減らすことができます。

実際には-eとまったく同じ動作をしますが、--canonicalize-existingの方が意味が明確で読みやすく、スクリプトや自動処理に向いていると言えます。

3. 基本的な使用例

3. 基本的な使用例
3. 基本的な使用例

それでは、まず存在しないファイルを指定してみましょう。


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

このように、存在しないファイルを指定すると、エラーになります。

次に、存在するファイルを指定した場合を見てみましょう。


realpath --canonicalize-existing /etc/hosts
/etc/hosts

このように、実際にあるファイルであれば、正しい絶対パスが表示されます。

4. --canonicalize-existingと-eの違いは?

4. --canonicalize-existingと-eの違いは?
4. --canonicalize-existingと-eの違いは?

結論から言えば、--canonicalize-existing-e同じ機能です。

つまり、以下の2つのコマンドはまったく同じ動きをします:


realpath --canonicalize-existing /etc/hosts
realpath -e /etc/hosts

どちらを使うかは好みの問題ですが、可読性を重視したいときや、スクリプトで処理の意図を明確にしたいときには、長い名前の--canonicalize-existingを使うと良いでしょう。

5. 存在する親ディレクトリをたどって処理する例

5. 存在する親ディレクトリをたどって処理する例
5. 存在する親ディレクトリをたどって処理する例

--canonicalize-existingを使うと、指定したファイル自体だけでなくその親ディレクトリすべてが存在しているかもチェックされます。

たとえば、以下のように入力してみます。


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

このように、nonexistという途中のディレクトリが存在しない場合も、エラーになります。

これは、安全にパスの検証をしたいときにとても役立ちます。

6. スクリプトでの活用例

6. スクリプトでの活用例
6. スクリプトでの活用例

以下のようにシェルスクリプト内で使うと、入力されたパスが実在するかどうかを確認してから処理できます。


path=$(realpath --canonicalize-existing "$1" 2>/dev/null)
if [ -z "$path" ]; then
  echo "指定されたパスは存在しません"
  exit 1
fi
echo "絶対パス:$path"

このように使えば、存在しないパスを誤って処理するのを防げるため、セキュリティや正確性が求められる場面でも安心して使えます。

7. 他のオプションとの比較

7. 他のオプションとの比較
7. 他のオプションとの比較

realpathには他にもさまざまなオプションがあります。以下はその一部です:

  • --canonicalize-missing-m):存在しないファイルでも絶対パスを表示
  • --no-symlinks:シンボリックリンクを解決せずに表示
  • --logical:論理的なパスを表示(デフォルト)

今回の--canonicalize-existingは、安全性と確実性を重視する場面にぴったりのオプションです。

関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
realpath --canonicalize-existingオプションの使い方を解説!Linuxで既存パスだけ絶対パス化する方法
New2
ファイル・ディレクトリ操作
basenameの--zeroオプションでヌル文字区切り!xargsと安全に連携するLinuxの基本
New3
ファイル・ディレクトリ操作
find -userオプションの使い方を完全ガイド!初心者でもわかる所有者ユーザーでファイルを検索する方法
New4
ファイル・ディレクトリ操作
find -okオプションとは?初心者向けに丁寧解説!Linuxで確認付きコマンド実行をマスターしよう
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
cdコマンドとは?Linuxでディレクトリを移動する基本を初心者向けに解説
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
lsコマンドの-lオプションでファイルの詳細情報を一覧表示しよう!初心者でもわかる使い方と意味を徹底解説
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
rmコマンドとは?Linuxでファイルやディレクトリを削除する基本