Estou executando uma série de comandos na linha de comando que leva aproximadamente vinte minutos para ser concluída. Eu gostaria de ver algum tipo de notificação no meu Mac quando terminar, para que não precise monitorar o terminal quando ele terminar. Existe uma maneira de fazer isso?
$ svn update . && ant clean build start && *notify_me_somehow*
Editar :
Eu poderia usar, xclock
mas isso parece um hack. Idealmente, eu poderia enviar a notificação para qualquer lugar, como meu telefone, tela etc.
grownlnotify
.Respostas:
(svn update . && ant clean build start && say done) || say error
fonte
&&
para encadear vários comandos e envolvê-lo com um coletivo||
ou instrução para gerar um erro. +1 na verdadealias -g sd='; say done'
. Isso significa que eu só tenho que adicionarsd
a qualquer comando e serei notificado.(echo alik && echo Orly && say done) || say error
say -v Zarvox
que faz todos na vizinhança pularem, esta é uma notificação um pouco menos alarmante.No Mac OS 10.8, você pode enviar mensagens do Centro de Notificação (semelhante ao Growl, mas incorporado ao Mac OS).
Confira " Enviar um alerta para o Centro de Notificação a partir da Linha de Comando no OS X " para ver como instalar uma gema Ruby que permitirá enviar notificações a partir da linha de comando. Para simplificar o caso de uso comum de apenas se preocupar com o fato de algo no terminal estar sendo feito, adicione um alias ao seu .bash_profile:
Então você pode simplesmente fazer:
Depois que a tarefa de longa execução terminar, você terá um bom pop-up modal que persiste até você clicar nela:
fonte
brew install terminal-notifier
. Então você pode apenas escrevermyCommand && terminal-notifier -message 'finished'
. Testado no OS X Yosemite (10.10.1).myCommand; terminal-notifier -message 'finished'
caso contrário, a notificação não será mostrada semyCommand
falhar.say
comando, por exemplomy command ; terminal-notifier -message 'finished' ; say finished
Use Growl .
No
.dmg
arquivo, procure os extras, há um binário de notificação de crescimento. Instale-o, algo como o/usr/local/bin
. Então você pode usar este comandopara mostrar um pop-up, assim:
fonte
No Mac OS X Lion 10.7, o Terminal possui alguns novos indicadores de status para ajudar em problemas como este:
Nas guias:
Atividade: um indicador de atividade (indicador de progresso giratório) é exibido quando há uma saída recente para o terminal. Isso permite que você veja se está ocupado ou se concluiu um longo processo. (Ou, é claro, você pode usá-lo para saber quando começou a produzir resultados depois de realizar um trabalho silencioso por um tempo.)
Não lida: uma elipse "…" é exibida para indicar texto novo não lido nas guias de plano de fundo. Quando você seleciona a guia, o indicador é apagado.
Alerta: uma "campainha" é exibida para indicar quando uma BEL foi gravada nas guias ou janelas de segundo plano. Além disso, o Terminal exibe um emblema vermelho no ícone do aplicativo, indicando o número de alertas / campainhas "não lidas" em todos os terminais. Se o próprio terminal estiver em segundo plano, ele também retornará o ícone do Dock quando uma campainha for tocada.
Na janela minimizada Ícones do Dock:
Atividade: a atividade é indicada exibindo o nome do processo em primeiro plano.
Não lido: o texto não lido é indicado com reticências.
Janelas de terminal minimizadas mostram conteúdo ao vivo em seus ícones do Dock. Isso pode ser usado para verificar se há atividade ou mesmo para determinar o que o terminal está fazendo, se a saída que você procura é identificável (por exemplo, uma exibição "superior" é bastante fácil de reconhecer, mesmo em tamanhos pequenos). Isso é especialmente útil quando a ampliação do Dock está ativada ou você tem espaço para um Dock grande.
Além disso, você pode exibir algo no terminal para chamar sua atenção (o que seria visível mesmo em janelas minimizadas). Por exemplo:
Exiba um asterisco grande:
banner \*
Inverta a exibição:
printf '\e[?5h'
Pinte a tela de vermelho:
tput setab 1; tput clear
Sente-se em um loop, piscando na tela:
while true; do printf '\e[?5h'; sleep 1; printf '\e[?5l'; sleep 1; done
Também existem códigos de escape para manipular janelas (mover, definir tamanho, zoom, minimizar etc.). Você pode ampliar a janela do Terminal, por exemplo:
Veja "manipulação de janelas" em http://invisible-island.net/xterm/ctlseqs/ctlseqs.html para obter detalhes.
Outra abordagem é usar o AppleScript para exibir um alerta em uma janela separada:
fonte
Sei que estou atrasado para a pergunta, mas acho que há uma pequena peça que pode ser útil. Descobri que, apesar de agradável, ter seu terminal conversando com você não é exatamente funcional. O melhor é algo mais sutil como este:
Como Chris apontou, Lion adicionou poucos emblemas de notificação quando um BEL é lançado. Você pode jogar isso sozinho com o comando:
Portanto, se você estiver trabalhando em segundo plano e quiser uma notificação quando terminar, tente algo como:
Isso executa o comando ping como uma tarefa em segundo plano (o travamento e o faz) e gera um alerta simples quando termina. Historicamente, o BEL foi usado para emitir esse bip [horrível] de hardware, no entanto, o Lion substituiu com bom gosto o efeito sonoro "comando inválido", um distintivo de notificação e o ícone do terminal saltando duas vezes no dock.
fonte
printf '\a'
seria equivalente atput bel
. Observe que o Terminal não retorna o ícone do Dock se a guia que causou o alerta estiver ativa no momento.Apresento nesta resposta duas coisas:
afplay
, que reproduz arquivos de som , para notificação.Eu tenho esse script
~/bin/donebeep
:Isso toca um som diferente, dependendo se o argumento é 0. Então eu tenho um alias:
(Que eles tenham o mesmo nome é irrelevante e provavelmente uma má ideia.)
Para usá-lo em seu exemplo
svn update . && ant clean build start; donebeep
,. Observe que estou usando, em;
vez de&&
, para que ele possa me notificar sobre falhas e também sobre o sucesso.Antes de aprender
afplay
, costumavasay
falar mensagens. O papel dedonebeep
foi desempenhado por este script:Este script fala o código de saída diretamente, em vez de ter duas mensagens diferentes. Ele também menciona o nome do diretório atual (para ajudar a esclarecer qual tarefa está concluída) e pode receber um texto adicional para dizer, passando parâmetros para o alias (é por isso que o alias contém
"$@"
). Observe a trilha&
para que você não precise esperar a conclusão do discurso antes de receber um prompt.A página de manual para
afplay
está incompleta;afplay -h
lista todas as opções:fonte
Você também pode usar o comando build in say para notificação, por exemplo: say "ant: build: done". Veja: o homem diz no terminal.
fonte
Eu crio uma ferramenta simples que faz exatamente isso. https://github.com/vikfroberg/brb
Instalação
O Node.js precisa estar instalado: http://nodejs.org
Instruções
fonte
Eu escrevi
ntfy
exatamente para esse fim. É multiplataforma e pode enviar notificações automaticamente quando os comandos de execução longa terminam.Se você possui o Python
pip
(a maioria das distribuições Linux e MacOS possui), veja como instalá-lo e ativar as notificações automáticas:Confira em http://ntfy.rtfd.io
Além disso, também pode:
fonte
O iTerm2 possui um mecanismo interno para receber notificações, mas você precisa instalar a Integração de Shell .
Ao iniciar um comando de longa execução, selecione:
Editar> Marcas e anotações> Alertas> Alerta na próxima marca (
⌥Option
+⌘Command
+A
)Quando o prompt de comando retornar, você pode selecionar entre:
fonte
O Ubuntu envia o seguinte alias no ~ / .bashrc:
Com isso, você pode fazer coisas como:
Talvez haja um equivalente
notify-send
no Mac OSX? Eu já vi janelas pop-up semelhantes no Mac e no Ubuntu.fonte
notify-send
no Mac OS X.Meu problema com sons e janelas modais é que não sei dizer de onde eles vêm. Atualmente, trabalho com vários espaços e, às vezes, mais de 20 janelas de terminal.
Minha solução é portátil para o lado unix e deve funcionar com qualquer coisa que suporte sequências de escape ansi. Esta solução funciona com o Snow Leopard e provavelmente funcionará com versões mais antigas do terminal.
Linha única em .bash_profile
Quebrando isso:
Se você não gosta do vermelho, a cor de fundo do código de escape do google ascii. Observe que isso não altera a tela inteira em vermelho, mas apenas qualquer coisa emitida após a conclusão do comando.
fonte
Eu fiz um script para resolver isso que está aqui . Você não precisa de nenhum software extra para isso. Instalação:
brew install akashaggarwal7/tools/tsay
Uso:
sleep 5; tsay
Sinta-se livre para contribuir!
fonte
Aqui está minha função bash (basta colocá-la em qualquer lugar no seu
~/.bashrc
ou~/.zshrc
:Para usá-lo:
watch echo 'hi there'
Você também pode personalizar o som da notificação conforme documentado aqui: https://apple.stackexchange.com/a/115373/9622
fonte
Eu faço esse tipo de coisa o tempo todo. Minha linha de comando pode parecer
Se os comandos
bin/setup
e forembundle install
concluídos com êxito, ouvirei a voz do sistema / ditado dizer "Tudo pronto". Se&&
algum dos dois primeiros erros for lançado, a cadeia não será seguida e tudo que ouvirei é "Concluído".fonte
Você pode usar o
osascript
comando interno para executar um Apple Script que mostra uma notificação, por exemploVocê pode agrupá-lo com um ponto e vírgula simples, por exemplo
fonte