7

Если процесс занимает больше, чем REPORTTIME, zsh печатает время его завершения. Есть ли способ заставить его запускать пользовательскую команду в дополнение к этому?(Я хотел бы использовать функцию отправки уведомлений, чтобы сообщить мне о завершении процесса)

1 ответ1

5

У меня просто была такая же мысль. Сделал быстрый Google и нашел это ; Я немного адаптировал это. Запихните это в свой 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)

Я довольно счастлив с этим! :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .