我在终端中运行的大多数事情都需要很长时间来计算,我希望 bash 在输入终端的每个命令结束时输出一个时间报告。有什么我可以放入我的 bashrc 来做到这一点的吗?
例子:
$ find / -ls
<find / -ls return info>
start time = 10:21:54 | end time = 10:31:34 | time lapsed = 00:10:20
$
Run Code Online (Sandbox Code Playgroud)
或者
$ make all
<make all return info>
start time = 10:21:54 | end time = 10:31:34 | time lapsed = 00:10:20
Run Code Online (Sandbox Code Playgroud)
能够为像 cd 这样的命令添加一个例外列表会很好,但它不会真正打扰我。
我在我的中尝试了以下操作.bashrc
:
echo -ne "$PS1"
while IFS= read -er line;do
eval "time $line"
echo -ne "$PS1"
done
Run Code Online (Sandbox Code Playgroud)
这大致可以满足您的要求,但有几个注意事项:
\W
在回显提示符之前解释提示符中的类似序列)。clear
我想一个好的折衷方案是通过 shell 函数有选择地启用此功能:
timed_commands() {
[ "$1" = off ] && exec bash
PS1='$ ' # Put something simple here
while IFS= read -erp "$PS1" line;do
eval "time $line"
done
}
Run Code Online (Sandbox Code Playgroud)
打开它timed_commands
并使用关闭它timed_commands off
感谢 @jthill 的评论,切换-e
到read
.