在bash中使用内置的“ time”命令,而不是外部命令


12

使用该time命令时,遇到了一种情况,我应该使用内置的time而不是外部的GNU time命令/usr/bin/time。那么,我该怎么做呢?我在某处看到使用enable和/或command会有所帮助,但没有。

这是一个用例:

watch "time ls"

它使用了/usr/bin/time我不想要的外部命令!time当我time ls在终端上运行时调用内部bash函数时会发生这种情况,如下所示:

$ time ls

请注意,此处已回答了完全相反的要求:

两个命令有很多区别。内部命令time更精确(我想要),但是外部命令有更多选项(我不需要)。


watch 'bash -c "builtin time ls"'也许?
格伦·杰克曼

1
请参见此处有关如何强制bash使用内置函数的信息,请参见Petr Utzl的答案2:builtin time应该可以解决问题。
Fiximan

2
@Fiximan,time是不是在一个内置的bash,它是语言的保留字,所以你可以一次管道(像time foo | bar)或复合命令(像time for i in...;done
斯特凡Chazelas

Answers:


13

默认情况下,使用watch运行命令,/bin/sh -c '...'这样您看到的输出就是/bin/sh解释time命令的方式。您/bin/sh显然没有内置的time

要在其他外壳程序上运行命令,请使用该-x选项以摆脱默认设置,然后添加您自己的对想要内置外壳程序的显式调用。

watch -x bash -c 'time ls'
watch -x zsh -c 'time ls'

无论您如何运行watch,您正在查看的命令都不是运行该watch命令的shell的子级,因此shell的设置并不直接相关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.