Time
這些範例中的每個“時間”是關鍵字還是“/usr/bin/time”?
在以下範例中,每個
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
關注另一個time
或time -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 的不同。)