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


14

在中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

Answers:


14

我认为不修改bash源就无法获得完全相同的效果。但是您可以亲近,希望对您而言足够亲近。

您可以结合使用bash的hacky预命令钩子SECONDS变量来以非介入方式显示挂钟时间。由于Ville Laurikari,这是一个简单的实现。在开始命令之前以及在显示下一个提示之前,立即执行这些函数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每个命令的完整信息,以下是Dennis Williamson提出的一种方法:

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

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

请参阅如何在Bash提示中放入最后一个命令的有效时间?自动定时Bash提示符每执行的命令和节目吗?其他方法在堆栈溢出中使用(但是请注意,大多数方法仅给出经过的实时时间,而不是CPU时间)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.