90 votes

Comment recevoir une notification lorsque mes commandes sont terminées

Je lance une série de commandes sur la ligne de commande qui prend environ vingt minutes pour se terminer. J'aimerais voir une sorte de notification sur mon Mac lorsque celles-ci sont terminées afin de ne pas avoir à surveiller le terminal. Y a-t-il un moyen de faire cela?

$ svn update . && ant clean build start && *notify_me_somehow*

Éditer:

Je pourrais utiliser xclock mais cela semble être une astuce. Idéalement, je pourrais envoyer la notification n'importe où, comme sur mon téléphone, mon écran, etc.

2voto

Tomo Points 645

Voici ma fonction bash (il suffit de la mettre n'importe où dans votre ~/.bashrc ou ~/.zshrc):

watch(){
  cmd=$@ # L'interpolation directe de $@ ne fonctionne pas.
  $@ && say 'Watch Terminé!' && osascript -e "display notification \"Terminé : $cmd\" with title \"Alerte Watch\""
}

Pour l'utiliser : watch echo 'salut à tous'

Vous pouvez également personnaliser le son de notification comme documenté ici : https://apple.stackexchange.com/a/115373/9622

1voto

Mose Points 687

Mon problème avec les sons et les fenêtres modales est que je ne peux pas dire d'où ils viennent. Je travaille actuellement avec beaucoup d'espaces, et parfois plus de 20 fenêtres de terminal.

Ma solution est portable du côté unix, et devrait fonctionner avec tout ce qui supporte les séquences d'échappement ansi. Cette solution fonctionne avec Snow Leopard, et fonctionnera probablement avec des versions plus anciennes du terminal.

Une seule ligne dans .bash_profile

function watch { $* ; echo -n -e "\033[41m" ;  echo $* DONE ;  date ;  echo -n -e "\033[0m" ; }

En décomposant cela:

$* se développe pour donner la commande originale que je veux surveiller.
La première séquence d'échappement change la couleur de fond en rouge
echo répète la commande (avec un fond rouge, le mot DONE.
Exécuter Date vous indique quand cela s'est terminé.
la dernière séquence d'échappement réinitialise le terminal à ce qu'il était.

Si vous n'aimez pas le rouge, google les codes d'échappement ascii pour les couleurs de fond. Notez que cela ne change pas tout l'écran en rouge, mais seulement tout ce qui est affiché après que la commande ait fini.

1voto

Arturo Herrero Points 117

ITerm2 dispose d'un mécanisme intégré pour recevoir des notifications, mais vous devez installer l'Intégration Shell.

Lorsque vous lancez une commande de longue durée, sélectionnez :
Édition > Marques et annotations > Alertes > Alerte à la prochaine marque (Option+Command+A)

Quand l'invite de commande revient, vous pouvez choisir entre :

  • Afficher une boîte d'alerte modale
  • Poster une notification (exemple de capture d'écran)

0voto

Dustin Kirkland Points 676

Ubuntu expédie l'alias suivant dans ~/.bashrc :

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

Avec cela, vous pouvez alors faire des choses comme :

make; alert
sleep 10; alert

Peut-être qu'il y a un équivalent de notify-send dans Mac OSX? J'ai vu des fenêtres contextuelles similaires à la fois sur Mac et Ubuntu.

0 votes

Vous êtes sur le site d'Apple. Pour répondre à cela, veuillez expliquer comment obtenir notify-send sur Mac OS X.

4 votes

Je suis d'accord que c'est un peu inapproprié, mais en fait j'ai trouvé cela utile. Je suis arrivé à cette question depuis Google, et ma question initiale n'était pas spécifique à Mac. Comme l'auteur original, je veux une manière de ne pas devoir surveiller mon terminal lorsque j'exécute une commande qui prend du temps; je suis juste en train d'utiliser Ubuntu :/

0voto

Akash Agarwal Points 139

J'ai créé un script pour résoudre cela qui se trouve ici. Vous n'avez besoin d'aucun logiciel supplémentaire pour cela. Installation:
brew install akashaggarwal7/tools/tsay
Utilisation:
sleep 5; tsay

N'hésitez pas à contribuer!

0 votes

Raison pour le vote négatif?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X