Previous: mktemp invocation, Up: File name manipulation   [Contents][Index]


18.5 realpath: ファイル名を展開して表示する

realpath は、すべてのシンボリックリンクを展開し、 ‘/./’ や ‘/../’ に対する参照を解決する。 さらに、余分な ‘/’ 文字の削除も行う。デフォルトでは、 指定したファイル名のうち、最後の要素以外のすべての要素が実在していなければならない。


書式:

realpath [option]… file

このプログラムでは以下のオプションが使用できる。参照: Common options.

-e
--canonicalize-existing

指定されたファイル名中のすべての構成要素が実在することを確認する。 存在しなかったり、利用できなかったりする要素があると、-q オプションが指定されていないかぎり、realpath はエラーメッセージを出し、0 以外の終了コードで終了する。 ファイル名の末尾にスラッシュを付けると、その名前はディレクトリであるという指定になる。

-m
--canonicalize-missing

指定されたファイル名中に存在しなかったり、使用できなかったりする構成要素があれば、 それをディレクトリとして処理する。

-L
--logical

指定されたファイル名中にあるシンボリックリンクを展開する。 ただし、シンボリックリンクに ‘..’ という要素が後続している場合は、 シンボリックリンクの展開を行う前に、そちらを先に処理する。 (訳注: 例を挙げた方が、わかりやすいだろう。‘symlink-directory/../..’ といったファイル名が与えられた場合、symlink-directory というシンボリックリンクそのものの親ディレクトリの親ディレクトリに展開するということ。 次項の注と比較していただきたい。)

-P
--physical

指定されたファイル名中にあるシンボリックリンクを展開する。 シンボリックリンクに ‘..’ という要素が後続している場合も、 シンボリックリンクを展開してから、‘..’ の処理を行う。 こちらがデフォルトの動作モードである。(訳注: すなわち、 ‘symlink-directory/../..’ といったファイル名が与えられた場合、 シンボリックリンクの参照先の親ディレクトリの親ディレクトリに展開する。)

-q
--quiet

指定されたファイル名についてエラーメッセージを出力しない。

--relative-to=file

オプション引数に指定したファイルを基点とする相対パスとして、 ファイル名を展開する。このオプションは、ファイルの存在に関して -m-e オプションを認識することに注意していただきたい。

--relative-base=base

このオプションは --relative-to と一緒に使うこともでき、 その場合は、操作対象の filebase 以下のディレクトリに存在するときにのみ、 相対パス名を表示するように、--relative-to の出力に制限を課す。 filebase 以下のディレクトリに存在しないときは、 出力は絶対パスのファイル名になる。--relative-to を指定しなかった場合、 base 以下のディレクトリに存在するファイルは、base を基点とする相対パスで表示される。--relative-to も指定するなら、 そのディレクトリは base の下位ディレクトリでなければならず、 さもないと、このオプションは効果を持たない。このオプションは、ファイルの存在に関して -m-e オプションを認識することに注意していただきたい。 例を挙げよう。

realpath --relative-to=/usr /tmp /usr/bin
⇒ ../tmp
⇒ bin
realpath --relative-base=/usr /tmp /usr/bin
⇒ /tmp
⇒ bin
-s
--strip
--no-symlinks

シンボリックリンクの展開を行わない。すなわち、‘/./’ や ‘/../’ の参照の解決と、余分な ‘/’ 文字の削除だけを行う。 -m オプションと組み合わせた場合、realpath は与えられたファイル名に対して操作を行うだけであり、 その各要素が存在しているかどうか、実在のファイルに当たってみることはない。

-z
--zero

各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。 このオプションを使用すると、出力するデータに、途中に改行を挟むものがあっても、 他のプログラムがその出力を解析できるようになる。

終了ステータス:

0: すべてのファイル名が問題なく表示できた場合。
1: それ以外。