Shell 如何使用参数调用time命令,以及使用与不使用参数时相同的行为?
我想指定时间的格式,但其行为不同:Shell 如何使用参数调用time命令,以及使用与不使用参数时相同的行为?,shell,time,ksh,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并从第一次
$ 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
- ksh
time
可以使用的东西,例如内部运行管道的带有sh-c
的单阶段:
time -p sh -c 'echo hehe | sleep 1'
为什么必须将线路
的输出回送到时间?你的意思是一个接一个地运行吗?我有一个更有意义的任务要做,但是这个例子显示了我在time命令方面的问题。