man time
显示它有一些选项,例如,将输出写入time
文件而不是stderr
:
-o FILE, --output=FILE
所以,我尝试使用它
$ time -o out.txt ls
-o: command not found
real 0m0.081s
user 0m0.070s
sys 0m0.012s
这不行!它说-o: command not found
。
证明out.txt
不存在:
$ cat out.txt
cat: out.txt: No such file or directory
我究竟做错了什么?
我如何使用像-o somefile.txt
with这样的选项time
?
我使用 Linux Ubuntu 18.04bash
作为我的终端。
答案1
bash shell 正在将命令中的第一个单词“time”评估为保留字time
,并等待第二个单词的命令,即-o
,因此它正在打印:-o: command not found
。
在bash手册我们可以看到原因time
是一个保留字:
使用时间作为保留字允许对 shell 内置函数、shell 函数和管道进行计时。外部时间命令无法轻松地对这些进行计时。
为了使用该time
命令并使用其有用的参数,您必须这样指示 bash shell。最好使用该command
实用程序来完成此操作:
command time -o out.txt ls
或者您可以使用完整路径:
/usr/bin/time -o out.txt ls
或者甚至引用它:
"time" -o out.txt ls
或者用反斜杠转义它:
\time -o out.txt ls