如何在 bash 中自动计时命令?

如何在 bash 中自动计时命令?

在 中tcsh,有一个变量time

   The time shell variable can be set to execute the time builtin command
   after the completion of any process that takes more than a given number
   of CPU seconds.

我如何在 中执行此操作bash

答案1

我认为如果不修改 bash 源代码,您无法实现完全相同的效果。但您可以接近,希望对您来说足够接近。

您可以组合bash 的 hacky 预命令钩子以及SECONDS以非侵入方式显示挂钟时间的变量。这是一个简单的实现,因为维拉·劳里卡里。函数timer_starttimer_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信息,可以使用以下方法丹尼斯·威廉森

bind '"\C-j": "\C-atime {\C-e;}\C-m"'

当您按Ctrl+J而不是Enter来启动命令时,您将获得时间信息。不建议重新绑定Enter(即Ctrl+ ),因为修改后的命令有时在语法上不正确。M

如何在 Bash 提示符中显示最后一条命令的挂钟时间?自动计时每个执行的命令并在 Bash 提示符中显示?堆栈溢出对于其他方法(但请注意,大多数仅提供经过的实际时间,而不是 CPU 时间)。

相关内容