是否可以将刚完成的进程的执行时间 - 'time'命令的输出 - 包含在命令提示符中?我们在Linux机器上使用zsh,在Windows机器上使用bash(msys),所以很高兴知道如何在两者中完成。
答案 0 :(得分:5)
对于zsh,您可以尝试$REPORTTIME
变量(搜索man zshall
)。它不会在提示中加入时间,但它会在每个执行的命令后回显时间(在某些情况下不起作用)。您可以使用preexec
和precmd
挂钩以及$SECONDS
变量来获取执行时间(但不是太精确):
function preexec() {
typeset -gi CALCTIME=1
typeset -gi CMDSTARTTIME=SECONDS
}
function precmd() {
if (( CALCTIME )) ; then
typeset -gi ETIME=SECONDS-CMDSTARTTIME
fi
typeset -gi CALCTIME=0
}
PS1='${ETIME} %'
(注意PS1定义中使用的单引号。)
第三种方法将强制您失去更改环境变量的能力,或者只能用于单个命令。它还会强迫你写一些hacky来查看命令输出。这种方法是“重新定义接受行zle小部件以将time
添加到执行的命令”。我不是在这里编写代码,因为它有上述问题。
顺便说一下,$SECONDS
变量在bash中也可用,但我不知道如何在那里实现钩子。