Existe um equivalente ao precmd do zsh para executar uma função após a conclusão de um comando?
Estou procurando uma maneira de me enviar uma notificação para qualquer processo que leve mais de 60 segundos. O Zsh possui uma grande capacidade de imprimir um resumo dos recursos usados para cada comando, se o comando demorar mais que o valor definido em REPORTTIME segundos. Pelo que sei, a única opção disponível é imprimir o formato no TIMEFMT.
(Mais especificamente, pretendo me enviar uma notificação com https://pushover.net/ se qualquer processo em execução em uma sessão tmux desanexada demorar mais de 60 segundos para ser concluído.)
notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"
?Respostas:
Você pode usar
preexec
para começar a contar o tempo desde a execução e depoisprecmd
executar após a execução do comando e antes do prompt ser desenhado para avaliar se você deseja ou não a notificação (e enviá-la).fonte