Time

這些範例中的每個“時間”是關鍵字還是“/usr/bin/time”?

  • May 18, 2018

在以下範例中,每個time是關鍵字還是/usr/bin/time?為什麼,或者你如何找到它?

關鍵字可以是命令嗎?

或者關鍵字是否time適用於空命令?(我可能在文章或評論中的某個地方問過這個問題,但我找不到)

謝謝。

$ time time

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

$ time

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

time time中,兩者都是 bash 的內置命令,沒有一個是外部/usr/bin/time命令。

這是可能的,因為time內置將管道作為其參數,但time它本身是管道,因此可以進行多次呼叫。

如果您查看 bash 原始碼,您甚至會發現引用這種特殊情況的註釋,尋找time關注另一個timetime -p.

您只能看到一次輸出,因為time是通過設置位標誌來實現的,因此多次呼叫它沒有任何效果,因為它只是在該管道上設置了相同的位……

但是,這會在兩個單獨的管道中呼叫它,因此您會看到兩次輸出:

$ time { time; }

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

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

您可以通過使用路徑顯式呼叫外部來查看結果/usr/bin/time…或使用\time(前導\阻止外殼使用內置)或使用command內置(如中time command time),例如:

$ time command time
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
      [--portability] [--format=format] [--output=file] [--version]
      [--quiet] [--help] command [arg...]

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

如您所見,外部/usr/bin/time在沒有參數的情況下呼叫它時會抱怨……所以這就是您在那裡看到的。(此外,如果您在實際命令中使用它,您會注意到輸出格式與內置 bash 的不同。)

引用自:https://unix.stackexchange.com/questions/444071