Applescriptを使用して、ターミナルで複数のタブを起動し、それらに対してコマンドを実行する方法はありますか?
ターミナルで複数のサービスを起動して同時に実行および監視する必要があるプロジェクトがあり、その起動プロセスを自動化したいと考えています。
1つのオプションは、システムイベントを使用して、新しいタブの作成に必要なキーストロークを送信することですが、制限は、ユニバーサルアクセスの支援機器必須をオンにし、視力遅延を追加する必要がある場合があることです。
tell application "System Events" to tell process "Terminal" to keystroke "t" using command down
ターミナルスクリプトディクショナリから識別できる限り、タブから情報を取得することはできますが、ウィンドウの場合のように新しい情報を作成することはできません(たとえば、do script "clear"を実行します)。
GUIスクリプトを使用できるようです。 (ターミナルの辞書はタブをウィンドウの要素として認識しているため、GUIスクリプトを使用せずに新しいタブを作成できると期待していました。ただし、明らかに壊れています。)Chealionの回答と同様に、支援デバイスへのアクセスをオンにする必要がありますが、= Appleは、ここにあることを確認できるスクリプトを提供します。
http://www.Apple.com/applescript/uiscripting/
Matthew Lambieが、AppleScriptのGUIスクリプトを使用してTerminal.appにタブを作成する例を以下に示します。
http://lambie.org/2007/11/03/tabs-in-terminal-using-applescript-on-leopard/
Chealionの回答へのコメントとしては、この回答の方が良かったのですが、まだコメントをする担当者がいません。
iTerm には 優れたスクリプトサポート があります。 AFP 548には、 異なるタブで複数のsshセッションを開く という例があります。 [これは、GUIスクリプトよりも簡単で信頼性が高いと思います。]
基本的にすべてのAppleスクリプトをラップするnew_tab(title, command)
シェル関数を使用して、同じTerminal.appウィンドウから新しいタブを作成してタイトルを付けることができるスクリプト可能な方法を作成しました。
コードといくつかのバックストーリーに関する私の記事はここにあります: Mac OS X Terminal.app内でプログラム的にタブを作成してタイトルを付ける
これが誰かの人生をもう少し自動化:)することを願っています
私はあなたがターミナルを求めたことを知っています、しかし本当に-あなたはiTermを使うべきです:-)
これは、iTermの同僚によって書かれたスクリプトからのものです。
#!/bin/sh
osascript <<-eof
tell application "iTerm"
set myterm to (make new terminal)
tell myterm
launch session "Default session"
tell the last session
set name to "Server"
write text "cd \"$PROJECT_DIR\""
write text "script/server"
end tell
launch session "Default session"
tell the last session
set name to "Console"
write text "cd \"$PROJECT_DIR\""
write text "script/console"
end tell
end tell
end tell
eof
複数のタブを備えた新しいiTermウィンドウを起動し、それらの中でいくつかの小さなコマンドを実行します(Rails開発用)。
タブを取得する方法がわかりませんが、これにより複数のウィンドウが表示されます。
set commands to {"ls", "pwd", "cd /tmp; ls"}
repeat with com in commands
tell application "Terminal"
activate
do script with command com
end tell
end repeat