如何使用参数调用time命令和没有参数的相同行为?

时间:2017-03-08 12:10:55

标签: shell time ksh

我想指定时间格式,但行为不同:

$ 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并从第一次运行中获取结果?

1 个答案:

答案 0 :(得分:2)

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

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

切换到允许此操作的shell(如bash),或重写为外部time可以使用的内容,例如内部运行管道的sh -c的单个阶段:< / p>

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