Existe uma maneira de fazer o zsh executar um comando após o REPORTTIME?

6

Se um processo demorar mais do que REPORTTIME, zsh imprime a hora em que termina. Existe uma maneira de fazê-lo executar um comando personalizado, além disso? (Eu gostaria de usar notificar enviar para me informar sobre o processo concluído a execução)

    
por jck 18.02.2013 / 02:07

1 resposta

4

Eu só tive o mesmo pensamento. Fiz um rápido google e encontrei este ; Eu adaptei um pouco. Enfie isso no seu zshrc:

if [[ -x 'which notify-send' ]]; then
    notify-preexec-hook() {
        zsh_notifier_cmd="$1"
        zsh_notifier_time="'date +%s'"
    }

    notify-precmd-hook() {
        local time_taken

        if [[ "${zsh_notifier_cmd}" != "" ]]; then
            time_taken=$(( 'date +%s' - ${zsh_notifier_time} ))
            if (( $time_taken > $REPORTTIME )); then
                notify-send "task finished" \
                    "'$zsh_notifier_cmd' exited after $time_taken seconds"
            fi
        fi
        zsh_notifier_cmd=
    }
fi

[[ -z $preexec_functions ]] && preexec_functions=()
preexec_functions=($preexec_functions notify-preexec-hook)

[[ -z $precmd_functions ]] && precmd_functions=()
precmd_functions=($precmd_functions notify-precmd-hook)

Estou muito feliz com isso! :)

    
por 05.04.2013 / 21:39

Tags