xax*_*axa 14 command-line bash time-command
这可能是一个新手的问题,但我不明白这是如何配置的以及为什么time在这两种情况下命令的输出格式不同:
如果使用 via time,输出是三行基本信息
$ time sleep 1
real 0m1.003s
user 0m0.000s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
然后我可以检查使用的是哪个二进制文件
$ which time
/usr/bin/time
Run Code Online (Sandbox Code Playgroud)
并直接调用它以完全不同的格式获得输出,并提供更多信息
$ /usr/bin/time sleep 1
0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2000maxresident)k
0inputs+0outputs (0major+77minor)pagefaults 0swaps
Run Code Online (Sandbox Code Playgroud)
没有相关的别名 time
$ alias | grep time
$
Run Code Online (Sandbox Code Playgroud)
我在跑Ubuntu 16.04。
hee*_*ayl 23
第一个是bash自己的内置关键字time(用 编译bash),第二个是外部可执行文件time(/usr/bin/time,随time包提供)。
此外,which无法显示 shell 的内置命令或关键字,因为它只是搜索PATH,您需要使用type它。作为内置的 shell,type可以额外检查 shell 的内部实体(以及PATH),因此您可以通过以下方式发现差异:
type -a time
Run Code Online (Sandbox Code Playgroud)
这里:
$ type -a time
time is a shell keyword
time is /usr/bin/time
Run Code Online (Sandbox Code Playgroud)
如果您只使用time. 您还可以通过使用type(without -a)来获取正在执行的内容:
type time
Run Code Online (Sandbox Code Playgroud)
该-a通知type在外壳的内部实体搜索和也PATH即在所有可能的来源进行搜索。
如果出于某种原因您需要外部的,请使用以下任何一种:
\time
"time"
'time'
command time
Run Code Online (Sandbox Code Playgroud)