Feche todas as janelas do Mac Terminal, mas aquela que está executando um script

1

Eu estou tentando criar um script de shell que executa uma programação de simulação python em 4 janelas de terminal. Eu tenho o script que lança o programa quatro vezes em quatro janelas de terminal separadas (total de 5 janelas, 4 para os programas python e um para controlar as outras janelas de terminal). Eu quero agora criar um script que eu possa executar na janela do terminal de controle que fecha e mata os programas das outras quatro janelas do terminal, mas ainda tem o controle aberto.

O que eu tenho até agora é algo assim

#!/bin/sh

osascript -e 'tell app "Terminal" 
do script "killall python"
end tell'
osascript -e 'tell app "Terminal" to quit'
osascript -e 'tell app "Terminal" to open'

O problema é que a última linha não funciona porque ela fecha todas as janelas, incluindo aquela em que o script está sendo executado. Eu não estou familiarizado com o script shell ou apple, então qualquer ajuda seria bem-vinda. Eu postei no Stack, mas acho que esse pode ser um lugar melhor para uma questão de tipo de automação. Obrigado

    
por Greg Brown 25.09.2012 / 17:25

2 respostas

2

Você pode atribuir o id da janela "Principal" a uma variável e, em seguida, no final do script, fechar todas as janelas cujo ID não corresponda ao da janela "Principal". A parte AppleScript pode ser ao longo destas linhas:

tell application "Terminal"
    set mainID to id of front window
    -- insert your code
    close (every window whose id ≠ mainID)
end tell

EDITAR

#!/bin/sh

killall python

osascript -e 'tell application "Terminal"' -e 'set mainID to id of front window' -e 'close (every window whose id ≠ mainID)' -e 'end tell'
    
por 26.09.2012 / 13:40
1

Se a janela que está executando o script estiver na frente e o Terminal não solicitar confirmação ao fechar as outras janelas, tente algo assim.

tell application "Terminal"
    close rest of (get windows)
end tell
    
por 26.09.2012 / 13:39