Fonction / hook de la commande zsh post

16

Existe-t-il un équivalent de precmd de zsh pour exécuter une fonction une fois la commande terminée?

Je cherche un moyen de m'envoyer une notification pour tout processus qui prend plus de 60 secondes. Zsh a une grande capacité d'imprimer un résumé des ressources utilisées pour chaque commande si la commande prend plus de temps que la valeur définie en REPORTTIME secondes. D'après ce que je peux dire, la seule option disponible est d'imprimer le format en TIMEFMT.

(Plus précisément, je cherche à m'envoyer une notification avec https://pushover.net/ si un processus en cours d'exécution dans une session tmux détachée prend plus de 60 secondes.)

Geoffrey Gallaway
la source
13
Pourquoi était-ce fermé? Cela me semble utile et parfaitement logique.
Blacklight Shining
1
Je suis d'accord, c'est une bonne question et n'aurait pas dû être fermée.
NorthIsUp
On dirait que cette question similaire peut y répondre!
Brad Parks
J'aimerais que cette question soit rouverte s'il vous plaît.
pawamoy
As-tu essayé notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"?
JW0914

Réponses:

0

Vous pouvez utiliser preexecpour commencer à compter le temps écoulé depuis l'exécution, puis celui precmdqui s'exécute une fois l' exécution de la commande terminée et avant que l' invite ne soit dessinée pour évaluer si vous souhaitez ou non une notification (et l'envoyer).

blami
la source