realpath -qオプションの使い方とは?初心者にもわかる静かなパス変換コマンド
生徒
「Linuxで存在しないファイルのパスをrealpathで調べたら、エラーが出てビックリしました…」
先生
「それはrealpathが、デフォルトでは存在しないファイルを指定するとエラーメッセージを出すからですね。」
生徒
「できれば静かに動いてほしいです…。エラー表示を消す方法はありますか?」
先生
「その場合は-qオプションを使えば大丈夫です。静かに動作して、エラーを出さないようにできますよ。」
1. realpathコマンドとは?
realpathコマンドは、Linuxでファイルやディレクトリの絶対パスを表示するための便利なコマンドです。
たとえば、相対パスで指定されたファイルを、システムの中で一意に特定できる形で表示するのに使われます。
realpath ./sample.txt
/home/user/Documents/sample.txt
このように、./sample.txtという相対パスを、/home/user/Documents/sample.txtという絶対パスに変換してくれます。
2. -qオプションとは?
-qは--quietの省略形で、realpathコマンドを静かに実行するためのオプションです。
指定したファイルが存在しなかった場合でも、エラーメッセージを表示せず、標準エラー出力を抑えて実行できます。
つまり、「エラーは出さずに黙って失敗してほしい」ときに使います。
3. 通常のrealpathとの違い
存在しないファイルを指定すると、通常のrealpathは次のようなエラーを出します。
realpath notfound.txt
realpath: notfound.txt: No such file or directory
このように、標準エラー出力に「そんなファイルないよ」と怒られてしまいます。
4. -qオプションを使った例
-qを使うと、エラー表示を一切せずに静かに失敗します。
realpath -q notfound.txt
何も表示されないだけで、裏側では「ファイルがない」と判断され、何も出力しない状態になります。
5. シェルスクリプトでの利用例
-qは、シェルスクリプトやバッチ処理でとても役立ちます。
たとえば、ユーザーが入力したパスが存在するかどうかチェックする時に、余計なエラーを出さずに処理できます。
PATH_RESULT=$(realpath -q "$1")
if [ -n "$PATH_RESULT" ]; then
echo "ファイルが見つかりました:$PATH_RESULT"
else
echo "ファイルが見つかりませんでした"
fi
このように、realpath -qで得た結果が空かどうかを判定することで、ユーザーにわかりやすく対応できます。
6. 他のrealpathオプションと組み合わせて使う
-qは、他のオプションと組み合わせても便利です。たとえば、--stripと一緒に使えば、エラーを出さずにパスを正規化できます。
realpath -q --strip ./../test/missing.txt
このように、パスが存在していなくても、静かに正規化して処理できます。
7. スクリプトにおける「静かな実行」が重要な理由
たくさんのファイルを一括で処理するスクリプトでは、1つでもファイルが見つからないと大量のエラーが出て、ログが読みづらくなります。
また、自動バックアップやファイルチェック処理などで、存在しないファイルがあっても無視したい場合には、-qをつけて静かに処理を続行させるのがとても効果的です。
8. 似たコマンドとの違い
readlinkコマンドもファイルのパスを表示するコマンドですが、存在しないファイルを指定すると何も出力せず、realpathのようなエラーメッセージは出しません。
ただし、readlinkは相対パスをそのまま返すため、絶対パスを得たいときはrealpathの方が便利です。
9. -qオプションを使う際の注意点
- 失敗しても出力されないため、コマンドが成功したかは戻り値や出力の有無で判断する必要があります
- デバッグ時は
-qを外して、どこで失敗しているか確認しましょう - ログをとる場合は、
-qで静かにした上で、必要なメッセージをスクリプト内で出力する方法がおすすめです