Answers:
我认为不修改bash源就无法获得完全相同的效果。但是您可以亲近,希望对您而言足够亲近。
您可以结合使用bash的hacky预命令钩子和SECONDS
变量来以非介入方式显示挂钟时间。由于Ville Laurikari,这是一个简单的实现。在开始命令之前以及在显示下一个提示之前,立即执行这些函数timer_start
和timer_stop
。
function timer_start {
timer=${timer:-$SECONDS}
}
function timer_stop {
timer_show=$(($SECONDS - $timer))
unset timer
}
trap 'timer_start' DEBUG
PROMPT_COMMAND=timer_stop
PS1='[last: ${timer_show}s][\w]$ '
要获得time
每个命令的完整信息,以下是Dennis Williamson提出的一种方法:
bind '"\C-j": "\C-atime {\C-e;}\C-m"'
当您按Ctrl+ J而不是Enter开始命令时,您将获得时间信息。不建议重新绑定Enter(即Ctrl+ M),因为修改后的命令有时在语法上是不正确的。
请参阅如何在Bash提示中放入最后一个命令的有效时间?和自动定时Bash提示符每执行的命令和节目吗?其他方法在堆栈溢出中使用(但是请注意,大多数方法仅给出经过的实时时间,而不是CPU时间)。