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.)
notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"
?Réponses:
Vous pouvez utiliser
preexec
pour commencer à compter le temps écoulé depuis l'exécution, puis celuiprecmd
qui 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).la source