Como eu lanço comandos de terminal em múltiplas abas?

3

Existe uma maneira com o Applescript para lançar várias abas no Terminal e executar comandos contra elas?

Eu tenho um projeto que requer que eu lance vários serviços no Terminal para executar e monitorar simultaneamente e gostaria de automatizar o processo de inicialização.

    
por Michael Glenn 01.05.2009 / 22:25

6 respostas

1

Uma opção é usar o System Events para enviar as teclas necessárias para criar a nova guia, mas a limitação é que os Dispositivos Assistivos no Universal Access devem ser ativados e adicionar um atraso de visão pode ser necessário .

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

Tanto quanto eu posso discernir do dicionário de script de terminal - você só pode recuperar informações de guias, mas não criar novas como você poderia com windows (por exemplo, Run do script "clear"

    
por 01.05.2009 / 23:00
1

Parece que você pode usar o script da GUI. (Eu esperava poder fazer novas abas sem recorrer ao script da GUI, já que o dicionário do Terminal conhece as abas como elementos do Windows. Aparentemente quebradas.) Como na resposta da Chealion, o acesso para dispositivos auxiliares deve ser ativado, mas a Apple fornece um script que permite verificar se está aqui.

link

Matthew Lambie fornece um exemplo do uso do script GUI do AppleScript para criar abas no Terminal.app aqui:

link

Esta resposta teria sido melhor como um comentário à resposta do Chealion, mas ainda não tenho o representante para fazer comentários.

    
por 10.05.2009 / 20:42
1

iTerm tem bom suporte a scripts . AFP 548 tem um exemplo que abre várias sessões ssh em diferentes abas . [Eu suspeito que isso será mais fácil de fazer e mais confiável do que o script da GUI.]

    
por 29.05.2009 / 06:06
0

Não sei como obter as guias, mas isso gerará várias janelas:

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

Mais

    
por 01.05.2009 / 23:28
0

Eu sei que você pediu pelo Terminal, mas realmente - você deveria estar usando o iTerm: -)

Isto é de um script escrito por um colega de trabalho para o 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

Ele lança uma nova janela iTerm com várias abas e faz alguns pequenos comandos nelas (para o desenvolvimento do Rails).

    
por 29.05.2009 / 06:42
0

Eu criei uma maneira de criar scripts para permitir a criação e o título de novas guias a partir da mesma janela Terminal.app usando uma função new_tab(title, command) shell que basicamente envolve todo o script da apple.

Meu artigo com o código e alguns bastidores podem ser encontrados aqui: Criar programaticamente & Guias de título dentro do Mac OS X Terminal.app

Espero que isso torne a vida de alguém um pouco mais automatizada :

    
por 10.04.2013 / 16:06