显示自我在提示中启动最后一个命令以来经过的时间

显示自我在提示中启动最后一个命令以来经过的时间

有没有办法显示自我启动最后一个命令以来经过的时间?我找到了这个:PS1提示显示已用时间但这将显示自上一个命令完成到新命令完成所经过的时间。

我的想法是以某种方式强制提示添加time我输入的每个命令,以及以某种很好的方式格式化它。

像这样的东西:

$ ls
. ..
Last command took 0.001s
$ 

答案1

您需要两个函数和一个计时器。第一个函数在您在命令行中按 Enter 键后、实际命令开始之前执行。第二个函数在命令完成后、显示提示之前执行。计时器仅计算启动 shell 后的秒数。这zsh三个钩子分别称为precmdpreexecSECONDS

bash计时器的名称相同的情况下,函数precmd成为变量PROMPT_COMMAND,但不幸的preexec是函数丢失了,所以你需要自己编写它(没有什么挑战性的,但也不是微不足道的)或者从外部源安装已经编写的钩子,例如https://github.com/rcaloras/bash-preexec

现在我们只需要将所有部分粘合在一起,最少的代码如下所示:

preexec() {
    cmd_start="$SECONDS"
}

precmd() {
  local cmd_end="$SECONDS"
  elapsed=$((cmd_end-cmd_start))
  PS1="$elapsed "
}

把所有东西都放进去.bashrc

相关内容