web-dev-qa-db-ja.com

ターミナルコマンドを複数のタブで起動するにはどうすればよいですか?

Applescriptを使用して、ターミナルで複数のタブを起動し、それらに対してコマンドを実行する方法はありますか?

ターミナルで複数のサービスを起動して同時に実行および監視する必要があるプロジェクトがあり、その起動プロセスを自動化したいと考えています。

3
Michael Glenn

1つのオプションは、システムイベントを使用して、新しいタブの作成に必要なキーストロークを送信することですが、制限は、ユニバーサルアクセスの支援機器必須をオンにし、視力遅延を追加する必要がある場合があることです。

tell application "System Events" to tell process "Terminal" to keystroke "t" using command down

ターミナルスクリプトディクショナリから識別できる限り、タブから情報を取得することはできますが、ウィンドウの場合のように新しい情報を作成することはできません(たとえば、do script "clear"を実行します)。

1
Chealion

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の回答へのコメントとしては、この回答の方が良かったのですが、まだコメントをする担当者がいません。

1
Bahi

iTerm には 優れたスクリプトサポート があります。 AFP 548には、 異なるタブで複数のsshセッションを開く という例があります。 [これは、GUIスクリプトよりも簡単で信頼性が高いと思います。]

1

基本的にすべてのAppleスクリプトをラップするnew_tab(title, command)シェル関数を使用して、同じTerminal.appウィンドウから新しいタブを作成してタイトルを付けることができるスクリプト可能な方法を作成しました。

コードといくつかのバックストーリーに関する私の記事はここにあります: Mac OS X Terminal.app内でプログラム的にタブを作成してタイトルを付ける

これが誰かの人生をもう少し自動化:)することを願っています

0
Daniel Doezema

私はあなたがターミナルを求めたことを知っています、しかし本当に-あなたは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開発用)。

0
Commander Keen

タブを取得する方法がわかりませんが、これにより複数のウィンドウが表示されます。

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

もっと

0
Clint