realpath -sオプションとは?初心者でもわかるパスの表示方法と使い方
生徒
「Linuxでファイルの絶対パスを表示する方法ってありますか?」
先生
「ありますよ。realpathというコマンドを使えば、ファイルやディレクトリの絶対パスを表示できます。」
生徒
「絶対パスって何ですか?それと-sオプションって何に使うんですか?」
先生
「いい質問ですね!では、まずrealpathの基本と-sオプションの違いから丁寧に説明していきますね。」
1. realpathコマンドとは?
realpathコマンドは、指定したファイルやディレクトリの絶対パスを表示するためのLinuxコマンドです。
絶対パスとは、パソコンの中でファイルがどこにあるのかを、最初の「/」からすべての階層を含めて表したものです。
たとえば、次のように実行すると…
realpath ./sample.txt
/home/user/Documents/sample.txt
./sample.txtという相対パスが、/home/user/Documents/sample.txtという絶対パスに変換されて表示されます。
2. -sオプションとは?(シンボリックリンクを解決しない)
-s(または--strip)オプションを使うと、シンボリックリンクを解決せずに絶対パスを表示します。
通常、realpathはリンク先の実体ファイルのパスを表示しますが、-sオプションを付けることで、リンクそのもののパスを表示できます。
3. シンボリックリンクとは?
シンボリックリンクとは、別のファイルやディレクトリを参照する「ショートカットのようなもの」です。
たとえば、以下のように作成されたリンクがあるとします:
ln -s /home/user/Documents/original.txt shortcut.txt
shortcut.txtは、original.txtへのシンボリックリンクになります。
4. -sなしで実行すると?
まず、通常のrealpathでリンクを解決するとどうなるか見てみましょう。
realpath shortcut.txt
/home/user/Documents/original.txt
このように、リンクの元(shortcut.txt)ではなく、リンク先のファイル(original.txt)の絶対パスが表示されます。
5. -sオプションを使うとどうなる?
では、-sオプションをつけてみましょう。
realpath -s shortcut.txt
/home/user/Desktop/shortcut.txt
このように、リンクをたどらずにリンクそのもののパスを表示します。リンクの名前が重要な処理をしている場合には、この機能がとても便利です。
6. -sオプションが便利なケース
- リンク先の実体にアクセス権がない場合でも、リンク名だけ確認できる
- バックアップやファイル一覧作成時に、リンク先ではなくリンクそのものを記録したいとき
- 自動スクリプトでリンクかどうかを区別して処理したいとき
このように、ファイル操作やシステム管理で使える場面が多くあります。
7. オプションの組み合わせ例
-mオプションと組み合わせることで、複数ファイルを一度に処理できます。
realpath -s file1.txt file2.txt link.txt
/home/user/file1.txt
/home/user/file2.txt
/home/user/link.txt
このように一括で絶対パスを取得できます。
8. realpathとreadlinkの違い
readlinkも似たような役割を持つコマンドですが、デフォルトでは相対パスで出力される点が異なります。
また、realpathはパスを補完してくれるため、スクリプトなどで正確な処理をしたいときに向いています。
例:
readlink shortcut.txt
../Documents/original.txt
このように、相対パスが表示されます。
9. 注意点と豆知識
-sオプションは「symbolic linkをそのままにする」の意味で覚えるとよい- リンクが壊れていても、
-sならエラーにならずそのまま表示できる - ファイルの存在チェックなどには向いていないので用途に注意