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

Jef*_*ett 5 bash prompt timestamps

如何在命令启动时将时间戳附加到提示中?我正在寻找一种介于静态提示连续时钟之间的解决方案。

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

例如,当我打开一个新的 shell 时,我希望我的提示看起来像这样:

10:30:21 jeff ~ $
Run Code Online (Sandbox Code Playgroud)

然后假设它在我真正完成输入命令并点击之前就在那里停留了一分钟 Enter

10:30:21 jeff ~ 10:31:28 $ ./long_running.sh
10:36:52 jeff ~ $
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*ris 6

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

例如

trap 'echo -e "\nStarted at: $(date)\n"' DEBUG
Run Code Online (Sandbox Code Playgroud)

所以如果我这样做:

$ 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
Run Code Online (Sandbox Code Playgroud)

这不是重写提示,但您可以看到如何在每次命令之前输出内容。您可以根据需要使陷阱功能变得复杂。