2009年11月17日 22:00 [Edit]

#osxtips - Scripters のための Automator入門

たとえば、選択された文字列を Perl として実行しその結果を置き換えるサービスは、こんな簡単に作れます。

eval-as-perl

Rubyなら、こう。

eval-as-ruby

ところで、メニューにあるshell以外のプログラムを指定することは出来るのでしょうか?

例えば、/usr/bin/perlではなく/usr/local/bin/perlを指定したい、あるいは自分のホームディレクトリーにインストールした Ruby 1.9.1 を使いたいという時にはどうしたらよいのでしょうか。

やり方は、二通りあります。

一つはスクリプトを別に書いて、そのスクリプトを/bin/shなどを経由して実行するやり方。

eval-as-ruby

そしてもう一つは、以下の方法。

eval-as-ruby

  • shellには/usr/bin/perlを指定
  • exec qw{/Users/dankogai/ruby19/bin/ruby -e}, <<'RUBY', @ARGV;RUBYで実行スクリプトをサンドイッチ

なぜこうするかというと、実はAutomator自体が、スクリプトをこのやり方で実行しているから。実行用スクリプトがどこかに保存されているのではなく、ワンライナーと同じARGV経由でスクリプトを都度渡しているのです。

これだけ知っているだけでも、Serviceは簡単に作れます。似たようなことは今までもvimやemacs、CotEditorといったアプリケーション単位でも出来ていましたが、Snow LeopardからはServiceをサポートしている全てのアプリケーションからこれを利用できます。Stickiesからすら利用できちゃうのです。

というわけで、FirefoxのServicesサポートマダーとぐちりつつ本entryを締めます。

Enjoy!

Dan the Automator


この記事へのトラックバックURL

この記事へのコメント
WindowsからMacへの移行を考えている者です。
移行するにあたり、JScriptで書いたWSHスクリプトをどうやってMacOSに移植するかが悩みの種になっていて、乗り換えに踏み切れませんでしたが、本エントリがヒントになりそうです。
Posted by S at 2009年11月17日 22:55