web-dev-qa-db-ja.com

OSX 'は' bashスクリプトで開く

私はbashスクリプトを持っていますが、実際にはそれらの多くがOSXのFinderでファイルを開くことができるようにしたいと思っています。

これは本当に、本当に単純な概念ですが、何らかの理由で、bashスクリプトはFinderの[プログラムから開く]ダイアログでグレー表示されます。

アップルスクリプトやパッケージングをアプリとして使用するにはさまざまな方法があると思います...しかし、私はこれを理解することができず、この些細な作業のためだけに別の言語を選択する必要はありません。 -誰かが私にこれを行う方法をスプーンで与えることができますか?

ありがとう!

8
rich

不可能です。 Launch Servicesはアプリケーション識別子で動作し、bashスクリプトにはそれらがありません。

Automatorを使用してラッパーアプリケーションを作成する必要があります。

  1. Automatorを起動する
  2. 選択アプリケーション
  3. Run Shell Scriptアクションを探して、右側に追加します。
  4. 入力を引数として渡す
  5. そこにスクリプトを入れてください
  6. どこかに保存

Growl コマンドラインユーティリティを使用した私のバージョンは次のとおりです。

enter image description here

結果:

enter image description here


すべてを変更すると、この変更が~/Library/Preferences/com.Apple.LaunchServices.plistに与える影響を確認できます。

enter image description here

( "Test"はAutomatorアプリケーションに付けた名前です)

11
Daniel Beck

ダニエルベックの指示にいくつかの変更を加えて、MacでChrome(Firefoxも機能します)で開きたいURLファイルに対してこれを機能させました。

私が使用したスクリプトは次のとおりです。

sed 's/^URL=/URL=/' "$1" | grep -m 1 '^URL=' | sed 's/^URL=//' | tr -d '\r' | xargs open -a "Google Chrome"

これにより、次のような一般的なURLファイルからURL =行が解析されます。

[InternetShortcut]
URL=http://www.docircuits.com/pricing
IDList=
HotKey=0
IconFile=O:\Apps\Firefox\Data\profile\shortcutCache\4t0JW4mY1qRPhiYz1fY3dw==.ico
IconIndex=0

Automatorスクリプトを〜/ Libraryディレクトリなどの場所に保存します。私はOpenUrl.appと呼んだ。

次に、どこかのURLファイルに移動し、「情報を見る」ポップアップを開きます。 OpenWithコマンドをOpenUrl.appスクリプトに変更します。 1つだけでテストするか、[すべて変更...]をクリックします。最初にクリックするとエラーが発生しましたが、2回目は機能しているようです。

これを開発する際に「シェルスクリプトの実行」エラーが発生しましたが、それはスクリプトの実際のエラーが原因でした。ダニエルのスクリプトの重要な問題は、開こうとしているファイル名のスペースを処理しないことだと思います。

1
Keith Olson