tee
将 stdin 的副本存储在文件中,以便稍后可以使用cat
该文件。
有没有一种工具可以做到这一点,同时还可以记录和回放计时?
所以我想要:
$ (echo foo; sleep 1; echo bar) |
the-tee-tool --out myfile > /dev/null
$ time the-tee-tool --in myfile | cat
foo
bar
real 0m1.002s
user 0m0.002s
sys 0m0.000s
我知道你如何制作这样一个工具,但是它已经存在了吗?
答案1
现在是这样:https://gitlab.com/ole.tange/tangetools/-/tree/master/teetime
Usage:
... | teetime [-a] file | ...
teetime -i file
-a append to file
-i read from file
答案2
我无法让 teetime 工作(没有错误,也许我有错误的 perl),所以我写了一个可以用 pip 安装的。
pip3 install --user pipevcr
您可以使用 录制管道-r
,例如:
(echo start; sleep 1; echo continue; sleep 1; echo end) | pipevcr -r test.vcr
并播放它:
pipevcr test.vcr
如果你想加快速度,你可以设置暂停的最大等待时间:
pipevcr -m 300 test.vcr
答案3
取决于所需的精度。为了达到一秒的精度,shell 脚本可以只在每一行前面加上当前的 SECONDS 值。重播时,它可以休眠自己的 SECONDS 和文件下一行中的值之间的时间段。
更高的精度需要调用date
(这给未知的精度提供纳秒,并为每行数据引发一个外部过程)或使用 C(提供微秒)。输入管道中的延迟会稍微影响初始时间戳。