gpt4 book ai didi

bash - 对标准输出的每一行添加时间戳

转载 作者:行者123 更新时间:2023-12-03 08:27:55 26 4
gpt4 key购买 nike

我正在寻求建议。

我希望标准输出的每一行都有一个时间戳。

这样,当我使用返回大量信息的脚本时,我可以跟踪每次返回的时间和日期。

我可以轻松地为我发出的每个命令添加时间戳,但我无法为每个返回获取它。

谢谢!

最佳答案

不要重新发明轮子,使用现有的解决方案。几乎所有发行版上都提供的 moreutils 软件包包含 ts。这是专门为您的用例编写的:

$ cmd | ts

例如:

$ (echo a; sleep 1; echo b; sleep 3; echo c; sleep 2; echo d; sleep 1) | ts
Feb 09 14:34:51 a
Feb 09 14:34:52 b
Feb 09 14:34:55 c
Feb 09 14:34:57 d

注意:当写入管道而不是终端时,程序的输出将由 libc 进行 block 缓冲,而不是写入终端时默认的行缓冲。

这意味着时间戳将是标准输出刷新时的时间戳,这不一定与写入一行的时刻相同。 stdbuf 可在 Linux 上使用来强制行缓冲输出:

stdbuf -oL cmd | ts

PS:在 MacOS 上,有用于相同目的的 unbuffer

关于bash - 对标准输出的每一行添加时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66119741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com