另一種很小的做法是:
trap 'SECONDS=0' DEBUG
export PS1='your_normal_prompt_here ($SECONDS) # '
這顯示的秒數自上次簡單的命令開始。如果您只是在不輸入命令的情況下直接按下Enter鍵,計數器就不會被重置 - 當您只想查看自上次做任何事情以來終端已啓動多久時,該計數器可能非常方便。它在Red Hat和Ubuntu中可以正常工作。它在Cygwin下並不適合我,但我不確定這是一個錯誤還是隻是在Windows下運行Bash的限制。
這種方法的一個可能的缺點是您保持重置SECONDS,但如果您確實需要保留SECONDS作爲自初始shell調用以來的秒數,則可以爲PS1計數器創建自己的變量,而不是直接使用SECONDS 。另一個可能的缺點是,大量秒值,如「999999」可能會得到更好的顯示爲天+時間+分+秒,但它很容易添加一個簡單的過濾器,例如:
seconds2days() { # convert integer seconds to Ddays,HH:MM:SS
printf "%ddays,%02d:%02d:%02d" $(((($1/60)/60)/24)) \
$(((($1/60)/60)%24)) $((($1/60)%60)) $(($1%60)) |
sed 's/^1days/1day/;s/^0days,\(00:\)*//;s/^0//' ; }
trap 'SECONDS=0' DEBUG
PS1='other_prompt_stuff_here ($(seconds2days $SECONDS)) # '
這意味着「999999 「變成」11日,13:46:39「。在結束時的sed改變「1天」到「1天」,並且剪掉如空領先值「0天,00:」。適應口味。
這是Unix/Linux Stackexchange的一個很好的問題。 – Flimm 2013-07-03 09:48:09
但是我從來沒有在那裏發現它,也沒有能夠給回答者獎勵賞金。 :( – 2013-08-08 18:26:40
@Flimm已經在那裏重新調試過了:[強制爲每個命令添加'別名'](http://unix.stackexchange.com/questions/12059/forcing-an-added-alias-to-every-command )無論如何[這個問題太舊,無法遷移](http://meta.stackexchange.com/questions/151890/disable-migration-for-questions-older-than-60-days)。 – Gilles 2013-11-19 20:36:18