コマンド/osascript

提供: MacWiki
移動: 案内検索

概要[編集]

AppleScript を実行するためのコマンドです。

  • 場所: /usr/bin/osascript
  • OS X のバージョン:Mac OS X 10.4

使い方[編集]

osascript <file>
osascript -e 

osascript は指定されたファイルか、コードを AppleScript として実行します。 AppleScript ファイルをコマンドラインから呼び出せる他、Shell script と組み合わせて利用することも可能です。

--
-- sleep.scpt: sleep immediately
--
tell application "Finder"
  sleep
end tell

例えば、上のようなファイルを用意して、次のコマンドを実行すると、 30 分後に Mac をスリープさせることができます。

$ sleep 1800 && osascript sleep.scpt

オプション[編集]

-e <code>[編集]

<code> 部分の AppleScript コードを実行します。perl や ruby の -e オプションと使用方法は同じです。

osascript -e 'tell application "Finder" to activate'


ビープ音を鳴らす例.MacOSX 10.5.8 で動作確認. (ただし鳴ったり鳴らなかったりすることもある.MacOSX 10.6.3 で確認.)

osascript -e 'beep 2'

shebang[編集]

通常の流儀で書いてよい.

  • Leopard(10.5)からはshebang行も解釈されるようになりました。
$ cat astest
#!/usr/bin/osascript
tell application "iTunes" to play
beep 3


別方法[編集]

http://www.macosxhints.com/article.php?story=20060425140531375 より

$ ./astest 3
$ cat astest
#!/bin/sh
exec <"$0" || exit; read v; read v; exec /usr/bin/osascript - "$@"; exit
on run argv
  beep argv
end run


(間接的に)shebangを実現[編集]

MacOSX 10.4 以前ではこちらが必要とのこと http://qz.tsugumi.org/AppleScript%252Fosascript.html

#!/usr/local/bin/osas
tell application "iTunes" to play
$ cat /usr/local/bin/osas
#!/bin/sh
cat "$1" | (read;/usr/bin/osascript - "$@")
$

シェルスクリプトの中で利用する[編集]

最も手前のフォルダー(Finderのウィンドウ)のパスを取得する

#!/bin/sh
ID=1
/usr/bin/osascript -e 'tell application "Finder" to get POSIX path of (target of window ${ID} as string)'
#!/bin/sh
ID=1
OUTPUT=$(
echo "
tell application \"Finder\"
    get POSIX path of (target of window ${ID} as string)
end tell
" | osascript -
)
echo "${OUTPUT}"
#!/bin/sh
ID=1
OUTPUT=`osascript << SCRIPT
tell application "Finder"
    get POSIX path of (target of window ${ID} as string)
end tell
SCRIPT`
echo "${OUTPUT}"

Rubyスクリプトの中で利用する[編集]

シェルスクリプトとほぼ同様に書けます。

#!/usr/bin/ruby
ID=1
OUTPUT=`osascript << SCRIPT
tell application "Finder"
    get POSIX path of (target of window #{ID} as string)
end tell
SCRIPT`
puts "#{OUTPUT}"

Wiki内の関連ページ[編集]