2011-07-22 50 views
4

是否可以將剛完成的進程的執行時間(「時間」命令的輸出)包含到命令提示符中?我們在linux上使用zsh,在Windows機器上使用bash(msy​​s),因此知道如何在兩臺機器上都可以這樣做。將進程執行時間包含到shell提示符中

+0

告訴我們你已經試過了,也許我們可以提供幫助。祝你好運。 – shellter

回答

5

對於zsh,您可以嘗試$REPORTTIME變量(搜索man zshall)。它不會在提示中放置時間,但它會在每次執行命令後回顯時間(在某些情況下不起作用)。您可以使用preexecprecmd掛鉤和與$SECONDS變量獲得執行時間(但不是太精確):

function preexec() { 
    typeset -gi CALCTIME=1 
    typeset -gi CMDSTARTTIME=SECONDS 
} 
function precmd() { 
    if ((CALCTIME)) ; then 
     typeset -gi ETIME=SECONDS-CMDSTARTTIME 
    fi 
    typeset -gi CALCTIME=0 
} 
PS1='${ETIME} %' 

(注意,在PS1定義中使用單引號)

第三種方法要麼力你無法改變環境變量的能力,或者只能用於單個命令。它也會迫使你寫一些黑客來查看命令輸出。這種方法是「重新定義接受線zle小部件,將time添加到執行的命令」。我不在這裏寫代碼,因爲它有上面描述的問題。

順便說一下,$SECONDS變量也可以在bash中使用,雖然我不知道如何在那裏實現掛鉤。

相關問題