web-dev-qa-db-ja.com

プログラムでiTermを使用してウィンドウを分割しますか?

開発ワークステーションでは、毎朝同じコマンドを開始しなければならないことがよくあります。

zeus startzeus server(zeus経由でRailsを起動)、redis-server、その他3つ。

多くの人がいつも走らせていると言うでしょうが、私は自分の仕事でたくさんの仕事をしていて、別々のRailsプロジェクトに取り組んでいる間、それらすべてを走らせていることに気づきます。

理想的にはウィンドウをプログラムで分割することによって(⌘-Dのように)、これらすべてを1つのコマンドから開始する、作成できる高度なエイリアスはありますか。

私はoh-my-zshでiTerm2を使用しています。

それらがすべて同じウィンドウにあるかどうかは気になりません(何らかの形でバックグラウンドプロセスとして実行されています)が、出力を確認し、各コマンドからの出力を操作する必要があるため、それがどのように機能するかわかりません。

ありがとう!

7
Tallboy

これをiTerm2から直接簡単に呼び出して、プレスをシミュレートできます D

osascript -e 'tell application "System Events" to key code 2 using command down'

これを機能させるには、プログラムをバックグラウンドで起動する必要があります。そうしないと、osascriptを実行できません。

some-command &
osascript -e '…'

そこから新しいiTerm2ウィンドウが表示されるので、AppleScriptのwrite textオプションを使用して、さらにシェルコマンドを実行する必要があります。詳細については、こちらを参照してください: AppleScriptを設定して新しいiTerm2タブを開き、ディレクトリを変更するにはどうすればよいですか?

7
slhck

ここでの答えは少し時代遅れです。これは、同様のことを行うサンプルスクリプトです。

tell application "iTerm"
    tell current window
        -- create a tab for background db stuff
        create tab with default profile
        tell current session
            write text "mongod &"
            write text "redis-server &"
        end tell
        close current tab

        -- create tab to run aioc server
        create tab with default profile
        tell current session
            write text "title server"
            write text "aactivate"
            write text "arunserver"
            -- split tab vertically to run scheduler
            split vertically with default profile
        end tell

        -- run scheduler
        tell last session of last tab
            write text "title scheduler"
            write text "aactivate"
            write text "ascheduler"
            -- split tab vertically to run main controller
            split vertically with default profile
        end tell

        -- run main_controller
        tell last session of last tab
            write text "title main_controller"
            write text "aactivate"
            write text "amain_controller"
            -- split tab vertically to run aggregator
            split vertically with default profile
        end tell

        tell last session of last tab
            write text "title aggregator"
            write text "aactivate"
            write text "aggregator"
        end tell




    end tell
end tell
1
abbood