16

我经常碰巧忘记用“time”命令显式地为执行添加前缀,理想情况下,我会在下一个 shell 提示符中看到最后一个命令花费了多少实时(在每个命令上)。

我已经浏览了 bash 文档,但找不到任何相关内容。

4

2 回答 2

12

你可以这样做:

$ bind '"\C-j": "\C-atime \C-m"'

或者把它放在你的~/.inputrc

"\C-j": "\C-atime \C-m"

然后,当您想要这样做时,您time sleep 1可以键入sleep 1并按Ctrl+J而不是Enter

我不建议在 bind 命令(或 .inputrc 文件)中交换jand 。m每次你按下Enter你都会被time添加,这可能很烦人,并且在输入多行命令时会导致错误。

您可以将其添加到您的~/.bashrc以使输出time更紧凑:

export TIMEFORMAT='r: %R, u: %U, s: %S'

(类似于我在这里的回答。)

于 2009-07-24T13:06:05.267 回答
10

另一个 stackoverflow 线程涵盖了基本相同的问题。我在该线程中的回答可以总结为:

trap 'SECONDS=0' DEBUG
export PS1='your_normal_prompt_here ($SECONDS) # '

...将秒数显示为整数,或者:

seconds2days() { # convert integer seconds to Ddays,HH:MM:SS
    printf "%ddays,%02d:%02d:%02d" $(((($1/60)/60)/24)) \
    $(((($1/60)/60)%24)) $((($1/60)%60)) $(($1%60)) |
    sed 's/^1days/1day/;s/^0days,\(00:\)*//;s/^0//' ; }
trap 'SECONDS=0' DEBUG
PS1='other_prompt_stuff_here ($(seconds2days $SECONDS)) # '

..for "Ddays,HH:MM:SS" 删除了前导空值。

于 2010-04-28T21:23:11.583 回答