首页 > 解决方案 > 如何记录每个命令的持续时间/结果并使用“历史”显示此信息?

问题描述

我有一些命令需要很长时间才能运行。我希望能够在历史上跟踪所有这些。

我查看了历史标志,但那些似乎只显示命令开始的时间/日期和状态代码。

标签: linuxbashzsh

解决方案


部分回答您的问题,这是我的一个功能,.zshrc用于在命令花费超过 10 秒时发送桌面通知。

您可以适应构建自己的历史文件。

(要获得通知,您必须具有 notify-send 或 adapt $notifier

notifier=notify-send
if [[ ${TERM[1,5]} == xterm ]]; then
    preexec() {
        notifiable_cmd=$1
        notifiable_start_time=`date +%s`
    }

    precmd() {
        if (( $? == 0 )); then
            notifiable_status="Success in "
        else
            notifiable_status="Failed in "
        fi
        if [[ "$notifiable_cmd" != "" ]]; then
            (( notifiable_time = `date +%s` - $notifiable_start_time ))
            if [[ $notifiable_time -ge 60 ]]; then
                notifiable_str_time="$(($notifiable_time%100000/60)) min $(($notifiable_time%60)) s"
            else
                notifiable_str_time="$notifiable_time[1,5] s"
            fi
            if [[ $notifiable_time -gt 10 ]]; then
                $notifier $notifiable_cmd "$notifiable_status $notifiable_str_time"
            fi
        fi
        notifiable_cmd=
    }
fi

(改编自contrapunctus.net 上 zsh 完成作业后咆哮的这篇文章)


推荐阅读