You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中友好地格式化打印命令执行耗时?

如何在Bash中友好地格式化打印命令执行耗时?

嘿,太懂你这种不想写一堆复杂bc表达式的心情了!Linux默认确实没有叫tdiff的原生命令,但有几个现成的工具能完美满足你的需求,不用自己写脚本:

1. 用dateutils包的datediff命令(推荐)

这是最贴合你想要的tdiff功能的工具,它能自动根据时长选择合适的单位来输出,还支持自定义格式。

首先得安装它:

  • Debian/Ubuntu系:sudo apt install dateutils
  • RHEL/CentOS系:sudo yum install dateutils

用法超级简单,完全符合你期待的写法:

#!/bin/bash
start=$(date +%s)

./my-long-command.sh
./another-longcommand.sh

echo "Completed, in $(datediff $(date +%s) $start -f '%a')"

这里的%a参数会让它自动输出友好的格式化结果——比如耗时450秒就显示7m30s,耗时1小时20分就显示1h20m,小于60秒就直接显示XXs,完全不用你操心单位转换!

如果你想要更定制化的格式,比如强制显示时分秒,可以用%Hh %Mm %Ss,比如datediff ... -f '%Hh %Mm %Ss',会输出0h7m30s这种格式。

2. 用GNU Date自带的时间差计算

如果不想装额外的包,Linux默认的GNU date命令也能搞定,虽然需要一点点简单的计算,但比bc清爽多了:

#!/bin/bash
start=$(date +%s)

./my-long-command.sh
./another-longcommand.sh

end=$(date +%s)
duration=$((end - start))
echo "Completed, in $(date -u -d @"$duration" +'%H:%M:%S')"

这个会输出类似00:07:30的时分秒格式,如果你想让它更智能地显示单位(比如只显示秒或分钟),可以加几行简单的判断,但如果你追求完全不用自己写逻辑,还是datediff更省心。

备注:内容来源于stack exchange,提问作者yegor256

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:23:06