有没有办法显示自我启动最后一个命令以来经过的时间?我找到了这个:PS1提示显示已用时间但这将显示自上一个命令完成到新命令完成所经过的时间。
我的想法是以某种方式强制提示添加time
前我输入的每个命令,以及以某种很好的方式格式化它。
像这样的东西:
$ ls
. ..
Last command took 0.001s
$
答案1
您需要两个函数和一个计时器。第一个函数在您在命令行中按 Enter 键后、实际命令开始之前执行。第二个函数在命令完成后、显示提示之前执行。计时器仅计算启动 shell 后的秒数。这zsh
三个钩子分别称为precmd
、preexec
和SECONDS
。
在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
。