Разделить окно программно с iTerm?

на моей рабочей станции разработки мне часто приходится запускать одни и те же команды каждое утро.

zeus start,zeus server (загрузка rails через zeus),redis-server, и, как и 3 другие.

Я знаю, что многие люди сказали бы, что они работают все время, но я много работаю над своими собственными вещами, и это меня раздражает, когда все они работают, пока я работаю над отдельными проектами rails.

есть ли какой-то расширенный псевдоним, который я могу сделать, который запускает все это с одного команда, в идеале программно разбивая окно (например,⌘-D).

Я использую iTerm2 с oh-my-zsh.

Я бы не возражал, если бы они все были в одном окне, я полагаю (как-то работает в качестве фоновых процессов), однако мне иногда нужно смотреть на вывод и работать с выводом каждой команды, поэтому я не уверен, как это будет работать.

спасибо!

13
задан Tallboy
15.12.2022 4:18 Количество просмотров материала 3673
Распечатать страницу

2 ответа

вы можете легко вызвать это от iTerm2 сразу для того чтобы сымитировать отжимать D:

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

для этого нужно запустить программу в фоновом режиме, так как в противном случае вы не сможете запустить osascript:

some-command &
osascript -e '…'

оттуда вы приземлитесь в новом окне iTerm2, поэтому вам нужно использовать write text опция в AppleScript для запуска дальнейших команд оболочки. Подробнее читайте здесь: как настроить AppleScript, чтобы открыть новую вкладку iTerm2 и изменить каталог?

5
отвечен slhck 2022-12-16 12:06

ответ здесь немного устарела.. вот пример скрипта, который делает нечто подобное:

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
0
отвечен abbood 2022-12-16 14:23

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх