如何调用带参数的时间命令以及与不带参数相同的行为?

How to invoke time command with parameter and same behavior as without parameter?

我想指定时间的格式,但表现不同:

$ time echo hehe | sleep 1        

real    0m1.03s
user    0m0.00s
sys     0m0.00s

$ time -p echo hehe | sleep 1     

real 0.00
user 0.00
sys 0.00

因此,如果我提供任何时间开关,它的行为会有所不同:

如何指定 -p 并从第一个 运行 获取结果?

你不能。在 ksh 中,time 可以为管道计时,而 time -p 只能为第一阶段计时。

    管道上的
  • POSIX time 未定义。 ksh 的实现选择对整个管道计时。
  • ksh time 不支持 -p 或任何其他标志,如果使用任何标志调用它,将委托给外部 time
  • 外部time(例如/usr/bin/time)只能在管道的第一阶段运行(因为管道是shell构造并且需要shell合作)。

要么切换到允许这样做的 shell(如 bash),要么重写为外部 time 可以使用的东西,例如使用 sh -c 内部运行管道:

time -p sh -c 'echo hehe | sleep 1'