2007-03-28

如何重定向time的输出至文件

很多人可能遇到这样的问题,想把time命令的统计结果重定向至一个文件,而不要它所测量命令的输出。比如:

$ time ls
autotest.sh clustalw

real 0m0.004s
user 0m0.000s
sys 0m0.004s

如果直接用>,即:
$ time ls > tmp
autotest.sh clustalw

real 0m0.004s
user 0m0.000s
sys 0m0.004s

那么tmp得到的内容是:
autotest.sh clustalw

real 0m0.004s
user 0m0.000s
sys 0m0.004s

也就是并没有将ls的结果排除。这是因为time将> tmp看成了ls的参数。

man time可以发现有个-o (--output=FILE)来指定time的输出文件,但是
$ time -o tmp ls

报错:
-o: command not found

问题在于支持-o的是GNU time,而默认使用的是shell自带的time,解决办法很简单:

/usr/bin/time -o tmp ls

即写全路径强制使用GNU time.

没有评论: