我经常忘记使用“time”命令显式地使用执行前缀,理想情况下我会在下一个shell提示符中看到最后一个命令花了多少实时时间(在每个命令上)。
我已经浏览过bash文档,但找不到任何相关内容。
答案 0 :(得分:10)
你可以这样做:
$ bind '"\C-j": "\C-atime \C-m"'
或者将其放入~/.inputrc
:
"\C-j": "\C-atime \C-m"
然后,当您想要time sleep 1
时,您需要输入sleep 1
并按 Ctrl + J 而不是 Enter
我不建议在bind命令(或.inputrc文件)中交换j
和m
。每次按 Enter ,都会添加time
,这可能非常烦人,并且在输入多行命令时会导致错误。
您可以将其添加到~/.bashrc
,以使time
的输出更加紧凑:
export TIMEFORMAT='r: %R, u: %U, s: %S'
(类似于我的回答here。)
答案 1 :(得分:8)
Another stackoverflow thread涵盖了基本相同的问题。我在该主题中的答案可归纳为:
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)) # '
..用于“Ddays,HH:MM:SS”,删除前导空值。