(OSX específico)
Yo, como muchos otros además de mí, a menudo me encuentro iniciando un proceso en el shell que tarda uno o dos minutos en completarse (un gran compromiso de svn, por ejemplo). Durante ese tiempo, a menudo hago alt-tab y actualizo reddit / slashdot / wikipedia / lo que sea. Sería genial tener algo configurado que publique una notificación de gruñido cuando finalice el proceso de shell.
En mi mundo ideal, funcionaría así: "Si un proceso acaba de salir de una pestaña abierta en la Terminal, publique una notificación de gruñido".
¿Alguien más tiene algo como esto?
growlnotify
ajustes de notificación de la aplicaciónGrowl.prefPane
para incluir un sonido de notificación de audio. Sin embargo, no se puede cambiar según el comando que ejecute, comosay
sería. Pero es mucho menos espeluznante.Respuestas:
Puede instalar growlnotify para hacer esto.
$ ./some_program && growlnotify Title -m Message
Por supuesto, necesitaría pensar en esto antes de ejecutar su comando. La alternativa (no sé cómo lograr esto) sería una notificación de Growl para cada comando, lo que sería increíblemente molesto.
Para simplificar el uso de growlnotify para su caso de uso, edite
~/bash_profile
y agregue lo siguiente:ahora puedes simplemente
long your_command
(similar asudo
).Ctrl-A
coloca el cursor al comienzo de la línea, si usted (como yo) siempre escribe primero el comando real y luego necesita agregar el prefijo.Mi bash-fu es lamentablemente insuficiente para poder agregar el comando al
growlnotify
mensajesegún el comentario de @mankoff a esta respuesta:
Simplemente puede escribir mientras se ejecuta el comando, se ejecuta después. Creé la siguiente función para mí:
Usar como
gn svn
.fuente
Lo que necesita es
growlnotify
qué es un programa CLI para activar notificaciones de gruñido. Podrías usarlo como:Tiene algunas perillas más con las que puedes jugar, úsalas
growlnotify -h
para obtener más información.fuente
&&
y||
tener diferentes mensajes entre los estados de éxito y fracaso, pero si uno solo está interesado en que se muestre un mensaje después de que se ejecute el comando, entonces;;
es infalible. =)Modificando la respuesta de Daniel Beck si haces este ligero cambio, lo hace muy agradable.
Luego, cuando ejecute 'svn up largo', verá el mensaje 'svn up completado'.
Muy bueno si ejecuta muchos scripts de shell que consumen mucho tiempo al mismo tiempo.
fuente
Ahora que OSX 10.8 y versiones posteriores tienen notificaciones nativas, así es como logro el mismo objetivo a través del notificador de terminal :
$ brew install terminal-notifier
Agregue esto a
~/.bash_profile
:Asegúrese de haber obtenido su perfil
. ~/.bash_profile
(no es necesario para futuras sesiones de terminal), ya que su perfil se obtiene automáticamente al crear una sesión.Pruebe con su comando favorito, seguido de la llamada a la función.
Los argumentos para el terminal-notificador pueden soportar algunas mejoras, pero un intento rápido de tomar el comando anterior para pasar a la función no tuvo éxito y esto me da toda la funcionalidad que necesito. Es decir, agregar
;gn
para obtener una notificación al final de cualquier proceso de larga duración.fuente
Usa growlnotify .
fuente
Esta es una forma de invocarlo automáticamente para procesos de "ejecución prolongada": http://hints.macworld.com/article.php?story=20071009124425468
Se conecta
$PROMPT_COMMAND
y notifica la finalización de los procesos que demoran más de 10 segundos en completarse. Es posible que deba ajustarlo para adaptarse a su propio entorno y flujo de trabajo (por ejemplo, ignorando la finalizaciónless
o la invocación del editor), pero parece funcionar razonablemente bien desde el primer momento.fuente
Solo busqué un poco más y encontré un método simple para esto. Es un poco más manual de lo que me gustaría que fuera, pero aquí va.
&& growlnotify -m "Message"
> a un proceso largo.Eso funciona para mí en este momento, pero creo que podría hacerlo mejor.
fuente
Solución OSX 10.9+ sin software de terceros:
En OSX 10.9 y superior, puede usar el comando AppleScript
display notification
para mostrar un gruñido desde el terminal de la siguiente manera:Si no desea escribir todo eso cada vez, puede usar un
alias
:Ejemplo:
fuente