2006.02.28
スクリプトからアプリケーションのパスを得る幾つかの方法
スクリプトを書いていてインストール済みアプリケーションのパスを得たいときが結構あるので、その方法をまとめてみました。AppleScript なら path to 命令、10.4 なら mdfind コマンドを使うのが楽かと思います。
- path to application "application name"
- AppleScript ならこの命令でコロン区切り( : )のエイリアス値を得られます。POSIX path 命令でスラッシュ区切り( / )のファイル値に変換出来ます。Mac の場合はスペースやシェルの特殊文字が含まれる場合が多々あるので、quoted form も付けておいた方が無難です。
呼び出すアプリケーションが起動してしまうのが少し鬱陶しいです。シェルスクリプトから使いたい場合は osascript コマンドを使うことになりますが、かなり遅いです。path to application "Firefox" ⇒ alias "Mac:Applications:ThirdParty:Firefox.app:" quoted form of POSIX path of (path to application "Firefox") ⇒ '/Applications/ThirdParty/Firefox.app/'
- /usr/bin/mdfind
- 10.4 の新機能「Spotlight」のコマンドラインツール。引数としてメタデータを指定します。アプリケーションに関係あるメタデータは「kMDItemKind」、「kMDItemContentType」あたりでしょうか(メタデータリファレンス)。
もしくは% mdfind 'kMDItemKind == "アプリケーション" && kMDItemFSName == "Firefox.app"' ⇒ /Applications/ThirdParty/Firefox.app
「kMDItemKind」が英語だったり日本語だったり優先言語によって異なるので、「kMDItemContentType」を使った方が良いように思います。ただこれもバンドル形式とそうでないものとでは値が異なるので、どちらか解らなければ「||」で区切ってどちらか一方にマッチするように指定しておく方が無難です。また当然ながら 10.4 以降しか使えません。メタデータの情報は /usr/bin/mdls コマンドで調べられます。% mdfind '(kMDItemContentType=="com.apple.application-file" || kMDItemContentType=="com.apple.application-bundle") && kMDItemFSName=="Firefox.app"' ⇒ /Applications/ThirdParty/Firefox.app
-
追記(3月2日)
アプリケーションかどうかを判断するには、「kMDItemContentTypeTree」を使うのが良さそうです。「kMDItemContentTypeTree」には UTI が階層的に保持されており、アプリケーションならば値として「com.apple.application」を含んでいますのでこれを条件にしてやります。% mdfind 'kMDItemContentTypeTree=="com.apple.application" && kMDItemFSName=="Firefox.app"' ⇒ /Applications/ThirdParty/Firefox.app
- /usr/bin/find
- コマンドラインで検索と言えば find でしょうか。
便利なんですが、検索するパスを限定して実行しないとかなり時間がかかってしまいます。% find /Applications -type d -name Firefox.app ⇒ /Applications/ThirdParty/Firefox.app
- /usr/bin/locate
- find と同じく unix 由来の検索コマンドです。find と違うのは専用のデータベースを使って、素早く結果を得ることが出来ます。
なかなか素敵なコマンドですが、データベースの更新には時間と負荷が結構かかります。更新も weekly スクリプト内で実行されている為(手動で更新も出来ますが)、リアルタイムでの検索にはあまりむいていません。% locate Firefox.app | grep 'Firefox\.app$' ⇒ /Applications/ThirdParty/Firefox.app
- 関連記事
-
- JavaScript のリファレンス (2006/06/11)
- SpiderMonkey で JavaScript のお勉強 (2006/05/23)
- AppleScript の make new Finder window で with properties が反映されない (2006/03/24)
- スクリプトからアプリケーションのパスを得る幾つかの方法 (2006/02/28)
Posted at 22:13 | Script
- この記事へのトラックバックURL
- http://wildlifesanctuary.blog38.fc2.com/tb.php/49-6f41a756
- この記事へのトラックバック
- この記事へのコメント
| HOME |