Quando terminar de usar o Terminal, quero sair dele. No momento, tenho três opções:
Terminal killall. Isso encerrará o processo, mas de forma abrupta. Não acho que seja a melhor ideia.
Saída de chamada. Alterei as configurações para que a saída feche o Terminal. O aplicativo ainda aparece aberto no Dock e não faz o que eu quero.
Clique com o botão direito> Sair. No entanto, este não é um comando de Terminal para sair dele.
Então agora, como devo sair e fechar o Terminal? Já ouvi algo sobre osascript, mas não tenho certeza. Quero sair e fechar, para que o Terminal não esteja mais aberto, tanto como janela quanto como processo.
kill
, okillall
padrão é enviarSIGTERM
, que pode ser detectado. Alguns programas captam, limpam depois de si mesmos e fecham normalmente. Não tenho ideia seTerminal.app
está entre eles. No entanto, eu suspeito que isso seria melhor em Ask Different ou Super User em apuros, pois não parece ter nenhum conteúdo de programação.Respostas:
em Terminal.app
Preferências> Perfis> (Selecione um perfil)> Shell.
em 'Quando o shell sai' escolhido 'Fechar a janela'
fonte
Que tal o bom e velho Command-Q?
fonte
No aplicativo Terminal, selecione Preferências >> guia Perfis .
Selecione a guia Shell à direita.
Você pode escolher Nunca perguntar antes de fechar para suprimir o aviso.
fonte
When shell exits:
"fechar a janela"Na verdade, você deve definir uma configuração no seu Terminal, quando o Terminal estiver ativado pressione ⌘+ ,e você verá a tela abaixo:
Em seguida, pressione a guia shell e você verá a tela abaixo:
Agora selecione
Close if the shell exited cleanly
para Quando o shell sai .Pela configuração acima, a cada vez com o
exit
comando, o Terminal será fechado, mas não será encerrado.fonte
Você pode usar AppleScript por meio do
osascript
comando:fonte
.bashrc
(ou equivalente se você usar um shell diferente). Ainda estou pensando em uma resposta para 2.exit
após iniciar o processo daemonizado. Depois que o processo daemonizado aguardou um segundo, ele pode chamarosascript
conforme descrito.osascript
:tell application "System Events" to keystroke "a" using command down
. Isso provavelmente também terá o problema.Em uma janela de terminal, você pode digitar:
Isso encerrará o processo de aplicativo do Terminal, que é o pai do pai do processo atual, conforme visto pelo comando kill.
Para fechar uma janela Terminal de dentro de um script em execução, você precisa subir mais um nível na hierarquia do processo como este:
fonte
kill -9
menos que saiba que outros sinais não funcionarão.Que tenho usado
ctrl + d
. Isso o joga no destino onde você iniciou o comando sqlite3 em primeiro lugar.fonte
osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"
Isso simula um pressionamento de tecla CMD+ w.
Se você quiser que o Terminal feche completamente, você pode usar:
osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"
Isso não dá erros e faz com que o Terminal pare de forma limpa.
fonte
Você também pode usar este comando complicado, que não dispara um aviso sobre o encerramento de seu próprio processo:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit
Este comando é bastante longo, então você pode definir um alias (como
quit
) em seu perfil bash:alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'
Isso permitiria que você simplesmente digite
quit
no terminal sem ter que mexer com nenhuma outra configuração.fonte
Use o
osascript
comando em seu código como icktoofay mencionou:osascript -e 'tell application "Terminal" to quit'
Em seguida, abra as preferências do Terminal, vá para Configurações> Shell e defina "Avisar antes de fechar:" como "Nunca". O Terminal agora deve fechar completamente (não permanecer aberto no dock) e ignorar o prompt antes de sair. Se você tiver apenas uma janela do Terminal aberta e o
osascript
comando for sua última linha de código, ele deve esperar o comando executado antes de terminar.Isso não seria ideal se você estiver executando scripts na mesma janela ou em outras janelas em segundo plano (por exemplo, você pode executar um comando em segundo plano e continuar usando a janela atual para outros comandos se o primeiro comando for seguido por um "e" comercial ); seja cuidadoso!
Se você embrulhar o
osascript
código em um arquivo de script de shell, provavelmente poderá chamá-lo com qualquer nome de arquivo conciso que você der - desde que esteja no caminho de pesquisa do Terminal (executeecho $PATH
para ver onde o Terminal procura por scripts).fonte
Crie um script:
cat ~/exit.scpt
como isso:
command + w
para fechar a guia)tell application "Terminal" set WindowNum to get window count if WindowNum = 1 then quit else tell application "System Events" to keystroke "w" using command down end if end tell
Em seguida, adicione um alias em seu * shrc
apenas como
vi ~/.bashrc
ouzshrc
(mais alguma coisa?)adicione:
alias exit="osascript ~/exit.scpt"
E fonte de ~ / .bashrc ou reabra seu terminal.app
fonte
Tenho usado
sair do terminal -n
no final dos meus scripts. Você deve ter o terminal configurado para nunca solicitar nas preferências
Então Terminal> Preferências> Configurações> Shell Quando o shell sai Feche a janela Avisar antes de fechar Nunca
fonte
Tentei várias variações das respostas aqui. Não importa o que eu tente, sempre posso encontrar um caso de uso em que o usuário é solicitado a fechar o Terminal.
Como meu script é simples (
drutil -drive 2 tray open
- para abrir uma unidade de DVD específica), o usuário não precisa ver a janela do Terminal enquanto o script é executado.Minha solução foi transformar o script em um aplicativo, que executa o script sem exibir uma janela do Terminal. O benefício adicional é que todas as janelas do terminal que já estão abertas permanecem abertas e, se nenhuma estiver aberta, o Terminal não permanecerá residente após o término do script. Ele não parece iniciar o Terminal para executar o script bash.
Segui estas instruções para transformar meu script em um aplicativo: https://superuser.com/a/1354541/162011
fonte
Se este for um Mac, digite 'exit' e pressione Enter.
fonte