(Específico para OSX)
Eu, como muitos outros além de mim, frequentemente me vejo iniciando um processo no shell que leva um ou dois minutos para ser concluído (um grande svn commit, por exemplo). Durante esse período, costumo usar alt-tab e atualizar reddit / slashdot / wikipedia / o que for. Seria ótimo ter algo configurado que publique uma notificação de rosnado quando o processo do shell terminar.
No meu mundo ideal, funcionaria assim: "Se um processo sair de uma guia aberta no Terminal, publique uma notificação de rosnado".
Alguém mais tem algo assim configurado?
growlnotify
notificação do aplicativoGrowl.prefPane
para incluir um som de notificação de áudio. No entanto, não é mutável, dependendo do comando que você executa, comosay
seria. Mas é bem menos assustador.Respostas:
Você pode instalar o growlnotify para fazer isso.
$ ./some_program && growlnotify Title -m Message
Claro que você precisaria pensar nisso antes de executar seu comando. A alternativa (embora eu não saiba como conseguir isso) seria uma notificação de Growl para cada comando, o que seria insanamente irritante.
Para simplificar o uso de growlnotify para seu caso de uso, edite
~/bash_profile
e adicione o seguinte:agora você pode simplesmente
long your_command
(semelhante asudo
).Ctrl-A
posiciona o cursor no início da linha, se você (como eu) sempre digitar o comando real primeiro e precisar adicionar o prefixo posteriormente.Infelizmente, meu bash-fu é insuficiente para poder adicionar o comando à
growlnotify
mensagempelo comentário de @ mankoff a esta resposta:
Você pode simplesmente digitar enquanto o comando está sendo executado, sendo executado posteriormente. Eu criei a seguinte função para mim:
Use como
gn svn
.fonte
O que você precisa é
growlnotify
qual é um programa CLI para acionar notificações de crescimento. Você pode usá-lo como:Tem mais alguns botões com os quais você pode brincar, use
growlnotify -h
para obter mais informaçõesfonte
&&
e||
ter mensagens diferentes entre estados de sucesso e falha, mas se alguém estiver interessado apenas em uma mensagem sendo mostrada após a execução do comando, isso;;
é infalível. =)Modificar a resposta de Daniel Beck, se você fizer essa pequena alteração, torna muito agradável.
Então, quando você executar 'svn up longo', você verá a mensagem 'svn up concluída.'
Muito bom se você executar muitos scripts de shell demorados ao mesmo tempo.
fonte
Agora que o OSX 10.8 e posterior tem notificações nativas, é assim que eu realizo o mesmo objetivo via terminal-notifier :
$ brew install terminal-notifier
Adicione isto a
~/.bash_profile
:Verifique se você originou seu perfil
. ~/.bash_profile
(não necessário para futuras sessões de terminal), pois seu perfil é originado automaticamente ao criar uma sessão.Teste com seu comando favorito, seguido pela chamada de função.
Os argumentos para o notificador de terminal podem melhorar bastante, mas uma tentativa rápida de pegar o comando anterior para passar para a função não foi bem-sucedida e isso me dá toda a funcionalidade necessária. Ou seja, adicionar
;gn
para receber uma notificação no final de qualquer processo de longa execução.fonte
Use growlnotify .
fonte
Esta é uma maneira de invocá-lo automaticamente para processos de "longa execução": http://hints.macworld.com/article.php?story=20071009124425468
Ele se conecta
$PROMPT_COMMAND
e notifica a conclusão dos processos, levando mais de 10 segundos para ser concluída. Pode ser necessário ajustá-lo para se adequar ao seu próprio ambiente e fluxo de trabalho (por exemplo, ignorando a conclusãoless
ou a chamada do editor), mas parece funcionar razoavelmente bem.fonte
Acabei de bisbilhotar um pouco mais e encontrei um método simples para isso. É um pouco mais manual do que eu gostaria que fosse, mas aqui vai.
&& growlnotify -m "Message"
> a um processo longo.Isso funciona para mim agora, mas eu poderia fazer melhor, acho.
fonte
Solução OSX 10.9+ sem software de terceiros:
No OSX 10.9 e superior, você pode usar o comando AppleScript
display notification
para exibir um rosnado do terminal da seguinte maneira:Se você não quiser digitar tudo isso toda vez, poderá usar um
alias
:Exemplo:
fonte