Estoy ejecutando una serie de comandos en la línea de comandos que demora aproximadamente veinte minutos en completarse. Me gustaría ver algún tipo de notificación en mi Mac cuando estén terminadas, por lo que no necesito monitorear el terminal para cuando finalice. ¿Hay alguna forma de hacer esto?
$ svn update . && ant clean build start && *notify_me_somehow*
Editar :
Podría usar xclock
Pero esto parece un hack. Lo ideal sería enviar la notificación a cualquier lugar, como mi teléfono, pantalla, etc.
grownlnotify
.Respuestas:
(svn update . && ant clean build start && say done) || say error
fuente
&&
para encadenar varios comandos y envolverlo con un colectivo||
o declaración para levantar un error. +1 de hechoalias -g sd='; say done'
. Esto significa que solo tengo que añadirsd
a cualquier orden, y me avisará.(echo alik && echo Orly && say done) || say error
say -v Zarvox
lo que hace saltar a todos en la vecindad, esta es una notificación algo menos alarmante.En Mac OS 10.8 puede enviarse mensajes del Centro de notificaciones (similar a Growl pero integrado en Mac OS). Revisa esta página para ver cómo instalar una gema de Ruby que le permitirá enviar notificaciones desde la línea de comandos. Para simplificar la base de datos común de solo preocuparse por el hecho de que se haga algo en el terminal, agregue un alias a su .bash_profile, por ejemplo.
Entonces simplemente puedes hacer
Una vez que la tarea de larga duración termine, obtendrás una ventana emergente modal agradable que persiste hasta que hagas clic en ella:
fuente
brew install terminal-notifier
. Entonces puedes escribirmyCommand && terminal-notifier -message 'finished'
. Probado en OS X Yosemite (10.10.1).myCommand; terminal-notifier -message 'finished'
de lo contrario, la notificación no se mostrará simyCommand
fallasay
comando, por ejemplomy command ; terminal-notifier -message 'finished' ; say finished
Utilizar Gruñido .
En el
.dmg
archivo, busque los extras, hay un binario growlnotify. Instalalo, algo así como en/usr/local/bin
. Entonces puedes usar este comandopara mostrar una ventana emergente, así:
fuente
A partir de Mac OS X Lion 10.7, Terminal tiene algunos nuevos indicadores de estado para ayudar con problemas como este:
En las pestañas:
Actividad: se muestra un indicador de actividad (indicador de progreso de giro) cuando se ha producido una salida reciente al terminal. Esto le permite ver si está ocupado actualmente o si ha completado un proceso largo. (O, por supuesto, puede usarlo para saber cuándo ha comenzado a producir resultados después de realizar un trabajo en silencio durante un tiempo).
No leído: se muestran puntos suspensivos "..." para indicar el texto nuevo no leído en las pestañas de fondo. Cuando selecciona la pestaña, el indicador se borra.
Alerta: se muestra una "campana" para indicar cuándo se ha escrito un BEL en las pestañas de fondo o en las ventanas de fondo. Además, Terminal muestra una insignia roja en el ícono de la aplicación, que indica el número de alertas / campanas "no leídas" en todos los terminales. Si el Terminal en sí está en el fondo, también rebota su icono de Dock cuando se toca una campana.
En la ventana minimizada los iconos del Dock:
Actividad: la actividad se indica mostrando el nombre del proceso de primer plano.
No leído: el texto no leído se indica con puntos suspensivos.
Las ventanas de terminal minimizadas muestran contenido en vivo en sus iconos de Dock. Esto se puede usar para ver si hay actividad, o incluso para determinar qué está haciendo el terminal, si la salida que está buscando es identificable (por ejemplo, una pantalla "superior" es bastante fácil de reconocer incluso en tamaños pequeños). Esto es especialmente útil cuando la ampliación del Dock está activada o si tiene espacio para un Dock grande.
Además, podría mostrar algo en el terminal para captar su atención (que sería visible incluso en ventanas minimizadas). Por ejemplo:
Muestra un gran asterisco:
banner \*
Invertir la pantalla:
printf '\e[?5h'
Pintar la pantalla de color rojo:
tput setab 1; tput clear
Siéntate en un bucle, parpadeando la pantalla:
while true; do printf '\e[?5h'; sleep 1; printf '\e[?5l'; sleep 1; done
También hay códigos de escape para manipular ventanas (mover, configurar tamaño, ampliar, minimizar, etc.). Podría hacer zoom en la ventana del terminal, por ejemplo:
Ver "manipulación de la ventana" en http://invisible-island.net/xterm/ctlseqs/ctlseqs.html para detalles.
Otro enfoque es usar AppleScript para mostrar una alerta en una ventana separada:
fuente
Sé que llego tarde a la pregunta, pero creo que hay una pequeña pieza faltante que puede ser útil. Descubrí que, aunque está limpio, tener tu terminal de conversación contigo no es exactamente funcional. Lo que es mejor es algo más sutil como este:
Como Chris señaló, Lion ha agregado pequeñas insignias de notificación cuando se lanza un BEL. Puedes lanzarlo tú mismo con el comando:
Por lo tanto, si está realizando un trabajo en segundo plano y desea una notificación cuando finalice, puede intentar algo como:
Esto ejecuta el comando ping como una tarea en segundo plano (el colgar y realiza esto) y hace que emita una alerta simple cuando termina. Históricamente, se ha usado BEL para hacer que el [horrible] pitido del hardware, sin embargo, Lion lo ha reemplazado con buen gusto con el efecto de sonido "comando no válido", una placa de notificación y el icono del terminal rebotando dos veces en el dock.
fuente
printf '\a'
sería equivalente atput bel
. Tenga en cuenta que la Terminal no hace rebotar el icono del Dock si la pestaña que causó la alerta está actualmente activa.También puede usar el comando compilar en decir para la notificación, por ejemplo, decir "ant: construir: hecho". Ver: el hombre dice en la terminal.
fuente
Presento en esta respuesta dos cosas:
afplay
, que reproduce archivos de sonido , para la notificación.Tengo este guion,
~/bin/donebeep
:Esto reproduce un sonido diferente dependiendo de si el argumento es 0. Entonces tengo un alias:
(Que tengan el mismo nombre es irrelevante y probablemente sea una mala idea).
Para usarlo en tu ejemplo,
svn update . && ant clean build start; donebeep
. Tenga en cuenta que estoy usando;
más bien que&&
, para que pueda notificarme sobre el fracaso y el éxito.antes de aprendí sobre
afplay
, Solíasay
para hablar mensajes en su lugar. El rol dedonebeep
fue jugado por este script:Este script habla el código de salida directamente en lugar de tener dos mensajes diferentes. También menciona el nombre del directorio actual (para ayudar a aclarar qué tarea se realiza), y se le puede dar un texto adicional para decir al pasar los parámetros al alias (es por eso que el alias tiene
"$@"
en eso). Note el final&
para que no tenga que esperar a que finalice el discurso antes de recibir un aviso.los página de manual para
afplay
esta incompletoafplay -h
Enumera todas las opciones:fuente
Creo una herramienta simple que hace exactamente esto. https://github.com/vikfroberg/brb
Instalación
Node.js necesita ser instalado: http://nodejs.org
Instrucciones
fuente
escribí
ntfy
para exactamente este propósito Es multiplataforma y puede automáticamente enviar notificaciones cuando los comandos de larga duración terminen.Si tienes Python
pip
(La mayoría de las distribuciones de Linux y MacOS lo tienen), aquí se explica cómo instalarlo y habilitar las notificaciones automáticas:Échale un vistazo a http://ntfy.rtfd.io
Además de eso, también puede:
fuente
Ubuntu envía el siguiente alias en ~ / .bashrc:
Con esto, entonces puedes hacer cosas como:
Quizás hay un equivalente a
notify-send
en Mac OSX? He visto ventanas emergentes similares tanto en Mac como en Ubuntu.fuente
notify-send
en Mac OS X.Mi problema con los sonidos y las ventanas modales es que no puedo decir de dónde vienen. Actualmente trabajo con un montón de espacios y, a veces, más de 20 ventanas de terminal.
Mi solución es portátil al lado de Unix, y debería funcionar con cualquier cosa que admita las secuencias de escape ANSI. Esta solución funciona con Snow Leopard, y probablemente funcionará con versiones más antiguas de la terminal.
Una sola línea en .bash_profile
Rompiendo eso
Si no te gusta el rojo, google ascii escape códigos de color de fondo. Tenga en cuenta que esto no cambia toda la pantalla de color rojo, sino que simplemente se muestra algo después de que el comando haya finalizado.
fuente
Hice un script para resolver esto que es aquí . No necesitas ningún software adicional para esto. Instalación:
brew install akashaggarwal7/tools/tsay
Uso:
sleep 5; tsay
¡Siéntete libre de contribuir!
fuente
Aquí está mi función de bash (solo póngala en cualquier parte de su
~/.bashrc
o~/.zshrc
:Para usarlo:
watch echo 'hi there'
También puede personalizar el sonido de notificación como se documenta aquí: https://apple.stackexchange.com/a/115373/9622
fuente