如何在命令执行时标记提示?

如何在命令执行时标记提示?

当命令启动时,如何在提示中附加时间戳?我正在寻找一个介于两者之间的解决方案静态提示连续时钟

主要区别是静态提示将显示加载提示的时间。如果我让它静置几分钟,然后输入命令,那就是我想要添加另一个时间戳的时候。我的目标是能够轻松查看执行命令所需的时间差以及提示闲置的时间。除了我想使用 bash 之外,连续时钟答案的问题是它会丢失开始时间戳,因为它会刷新整个事情。

例如,我希望打开新 shell 时的提示符如下所示:

10:30:21 jeff ~ $

然后假设它只是在那里停留了一分钟,然后我才真正完成命令输入并点击Enter

10:30:21 jeff ~ 10:31:28 $ ./long_running.sh
10:36:52 jeff ~ $

请注意,它附加了另一个时间戳,显示我实际执行该命令的时间。通过减去下一个提示的开始时间戳,我可以轻松地看到该命令运行大约需要 5 分钟。

答案1

有一个 DEBUG 陷阱可以在每个命令运行之前调用

例如

trap 'echo -e "\nStarted at: $(date)\n"' DEBUG

所以如果我这样做:

$ trap 'echo -e "\nStarted at: $(date)\n"' DEBUG
$ pwd

Started at: Thu Aug 18 11:59:33 EDT 2016

/home/sweh
$ echo hello

Started at: Thu Aug 18 11:59:35 EDT 2016

hello
$ sleep 100

Started at: Thu Aug 18 11:59:37 EDT 2016

它没有重写提示,但您可以看到如何在每个命令之前输出内容。您可以根据需要使 trap 函数变得尽可能复杂。

答案2

退房时间bash_command_timer.shjichu4n

https://github.com/jichu4n/bash-command-timer/

我修改了自己的.bashrc以包含完整日期。

# https://github.com/jichu4n/bash-command-timer
. bin/bash_command_timer.sh
export BCT_TIME_FORMAT='%Y-%m-%d %H:%M:%S'

输出:

$ echo 1; echo 2; echo 3
1
2
3
[ 0s031 | 2017-09-18 17:30:29 ]

根据他的自述文件:

有关脚本如何工作的说明,欢迎您查看我的博客文章:Bash 中的 DEBUG trap 和 PROMPT_COMMAND。

相关内容