UNIX/Linuxの部屋 コマンド:realpath

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド realpath 相対パスを絶対パスに展開する このエントリーをはてなブックマークに追加

realpath コマンドは、相対パスを絶対パスに変換するコマンドである。また、以下の処理も行う。
  • シンボリックリンクをたどる
  • ../ や ./ を削除
  • // (/ を複数重ねる) を / に変換

要は、ファイル名の正規化を行うわけである。
% realpath ../
/usr/home/user
>> FreeBSDオンラインマニュアル(man) FreeBSD realpath(1)
>> Linuxオンラインマニュアル(man) Linux realpath(1)
>> Linuxオンラインマニュアル(man) Linux realpath(3)

関数 realpath 相対パスを絶対パスに変換する。 このエントリーをはてなブックマークに追加

. や .. やシンボリックリンクを展開し、相対パスを絶対パスに置換する。

引数として渡すファイル・ディレクトリ名は、存在しないファイル・ディレクトリであっても構わない。
#include <sys/param.h>
#include <stdio.h>
#include <stdlib.h>
main(){
char resolved_path[MAXPATHLEN];
if ( realpath("../../foo/hoge", resolved_path) == NULL ){
perror("hoge");
exit(1);
}
printf("%s\n", resolved_path);
exit(0);
}