Using time ls
,我有以下输出:
$ time ls -l
total 2
-rwx------+ 1 FRIENDS None 97 Jun 23 08:59 location.txt
-rw-r--r--+ 1 FRIENDS None 10 Jun 23 09:06 welcome
real 0m0.040s
user 0m0.000s
sys 0m0.031s
现在,当我尝试grep
只有real值线,实际结果是:
$ time ls -l | grep real
real 0m0.040s
user 0m0.000s
sys 0m0.031s
我的问题是,如何仅获取实际值作为输出?在这种情况下,0m0.040s
.
time
将其输出写入 stderr,因此您需要通过管道传输 stderr 而不是 stdout。但记住这一点也很重要time
是 bash 语法的一部分,它对整个管道进行计时。因此,您需要将管道用大括号括起来,或者在子 shell 中运行它:
$ { time ls -l >/dev/null; } 2>&1 | grep real
real 0m0.005s
使用 Bash v4.0(可能在 Linux 发行版上通用,但在 Mac OS X 上仍然不是标准),您可以使用|&
管道两者stdout
and stderr
:
{ time ls -l >/dev/null; } |& grep real
或者,您可以使用time
实用程序,它允许控制输出格式。在我的系统上,该实用程序位于/usr/bin/time
:
/usr/bin/time -f%e ls -l >/dev/null
man time
欲了解更多详细信息time
公用事业。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)