【シェルスクリプト】realpathコマンドで絶対パスを取得する

本サイトで紹介している商品・サービス等の外部リンクには、プロモーションが含まれています。
目次

realpathコマンドとは?

realpathコマンドは、指定したファイルやディレクトリの絶対パスを取得するためのコマンドです。

シェルスクリプトなどで変数にパスを設定するときに便利です。

基本的な構文

realpath [オプション] ファイルまたはディレクトリ
  • ファイルまたはディレクトリ:対象となるファイルやディレクトリのパス。
  • オプションについては後述します。

realpathの実行例

1. 絶対パスの取得

realpathコマンドを使うと、指定した相対パスが絶対パスに変換されます。

$ realpath ./test
/home/user/test

この場合、カレントディレクトリのtestファイルの絶対パスが得られます。

2. シンボリックリンクの解決

シンボリックリンクの実際の参照先を表示します。

$ ln -s /etc/passwd link_to_passwd
$ realpath link_to_passwd
/etc/passwd

link_to_passwdが指す本来のファイルパスを表示します。

3. 存在しないパスの確認

指定したパスが存在しない場合でも、絶対パスが生成されます。

$ realpath ./nonexistent
/home/user/nonexistent

主なオプション

--canonicalize / -c

$ realpath -c ./test
/home/user/test

与えられたパスを正規化して絶対パスを出力します(デフォルト動作)。

--no-symlinks / -m

シンボリックリンクを解決せずに絶対パスを出力します。

$ realpath -m link_to_passwd
/home/user/link_to_passwd

--relative-to=PATH

指定したパスに対して相対パスを計算します。

$ realpath --relative-to=/home/user /home/user/test
./test

スクリプトでの活用

シェルスクリプトの実行ディレクトリを取得

シェルスクリプトの中でどのディレクトリで実行されているのかを取得する際、cdpwdを組み合わせるやり方がよく見られます。

#!/bin/bash
script_dir=$(cd $(dirname $0); pwd)

realpathでより簡潔に記述することができます。

#!/bin/bash
script_dir=$(realpath $(dirname $0))

この記事が気に入ったら
フォローしてね!

コメント

コメントする

目次