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

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

Estou tentando criar um script de shell que execute uma programação de simulação python em 4 janelas de terminal. Eu tenho o script que inicia o programa quatro vezes em quatro janelas de terminal separadas (total de 5 janelas, 4 para os programas python e uma para controlar as outras janelas do terminal). Quero agora criar um script que possa ser executado na janela do terminal de controle que feche e elimine os programas das outras quatro janelas do terminal, mas ainda mantenha a janela de controle aberta.

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 fecha todas as janelas, incluindo aquela em que o script está sendo executado. Não estou muito familiarizado com shell ou script apple, então qualquer ajuda seria bem-vinda. Postei no Stack, mas acho que este pode ser um lugar melhor para uma pergunta do tipo automação. Obrigado

Responder1

Você pode atribuir o id da janela "Principal" a uma variável e ao final do script fechar todas as janelas cujo id não corresponda ao da janela "Principal". A parte AppleScript pode seguir estas 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'

Responder2

Se a janela que executa o script estiver na frente e o Terminal não solicitar confirmação ao fechar as outras janelas, você poderá tentar algo assim.

tell application "Terminal"
    close rest of (get windows)
end tell

informação relacionada