如何设置我的 tcsh 提示以显示上一个命令的执行时间?

问题描述

我在工作中使用 tcsh,如果知道命令的执行时间,我会非常感激。

例如:

~
❯ sleep 55

~ took 55s
❯

解决方法

只需使用 time 命令。

> time sleep 55
0.001u 0.000s 0:55.01 0.0%  0+0k 0+0io 0pf+0w

编辑:

我没有注意到标题。要对每个命令执行此操作,您可以将 precmd,postcmd 别名与 date 命令一起使用

alias postcmd 'set start_time=`date +%s`'
alias precmd 'set end_time=`date +%s`; @ cmd_time= $end_time - $start_time; echo took $cmd_time seconds'

运行这两个命令,或者将它们添加到 ~/.cshrc 如果您希望这是默认行为。输出将是这样的:

> time sleep 55
took 55 seconds

说明:

postcmd:在每个命令执行之前运行。

precmd:在打印每个提示之前(在命令运行之后)运行。

date +%s:以原始秒格式打印时间。

我只是将原始秒值保存在变量 start_timeend_time 中,然后将差值保存在 cmd_time 中并打印出来。