2016-11-09 136 views
3

time似乎一般我的系統上運行:爲什麼'time'不適用於'echo'?

➜ ~ time touch tmp.txt 
touch tmp.txt 0.00s user 0.00s system 54% cpu 0.007 total 

然而,它的輸出似乎得到抑制,當我試圖time echo

➜ ~ time echo 

而且加厚的情節:它似乎恢復其測量echo能力,提供我拋出echo到管道:

➜ ~ time echo | xxd  
00000000: f09f 8d94 0a        ..... 
echo 0.00s user 0.00s system 38% cpu 0.002 total 
xxd 0.00s user 0.00s system 88% cpu 0.003 total 

這是怎麼回事?是echo輸出到time的最愛流,取代它的報告?

獎勵積分爲:是否有某種方式(例如流重定向)使time echo輸出通常的報告?


編輯:一些評論人士指出,我使用zsh。當時我沒有注意到,但這解釋了很多。

bash使用正常的可執行文件來做timeecho

bash-3.2$ which echo 
/usr/local/opt/coreutils/libexec/gnubin/echo 
bash-3.2$ which time 
/usr/bin/time 

(貌似我使用的echo一個GNU版本,而不是大概BSD之一,/bin/echo,附帶的Mac OS X)。

zsh提供一些顯著比較特殊:

➜ ~ which echo 
echo: shell built-in command 
➜ ~ which time 
time: shell reserved word 

這些都不是正常的可執行文件。很有意思!

+2

它看起來像你使用'zsh',而不是'bash'。 – webb

+0

我無法重現您的問題。它適用於我預期使用馬科斯塞拉利昂bash 3和OEL 6.7 bash 4. – alvits

+0

在bash 3.2.52工作正常,所以它最有可能不是一個bash問題 –

回答

3

當您使用內置的time(測量完整管道)和另一個內置命令(如echo,true)組合時,似乎會發生這種情況。

奇怪的是,我在zshall手冊頁中找不到任何提及。

要解決它,運行這個命令:

time command echo 

command前置命令修飾符調用外部回聲,而不是內置的一個。

相關問題