2009-07-24 15 views
9

「time」コマンドを明示的に前置するのを忘れることがよくあります。理想的には、次のシェルプロンプトで、最後のコマンドがどのくらいリアルタイムに(すべてのコマンドで)取られたかがわかります。実行されたすべてのコマンドを自動的にタイミングさせ、Bashプロンプトで表示しますか?

私は既にbashのドキュメントを調べましたが、関連するものは見つかりませんでした。

$ bind '"\C-j": "\C-atime \C-m"' 

またはあなたの~/.inputrcでこれを置く:あなたはこれを行うことができ

+3

これはUnix/Linux Stackexchangeにとっては良い質問です。 – Flimm

答えて

9

"\C-j": "\C-atime \C-m" 

をあなたがtime sleep 1をしたいときに、あなたはsleep 1を入力しCtrlキー + Jを押したいですの代わりにを入力してください。を入力してください。

jmをbindコマンド(または.inputrcファイル)に入れ替えることはお勧めしません。 を入力するたびにと入力すると、timeが追加されます。これはかなり迷惑になる可能性があり、複数行コマンドを入力するとエラーが発生します。

あなたはtimeの出力をよりコンパクトにするために、あなたの~/.bashrcにこれを追加することができます。(。私の答えhereに類似)

export TIMEFORMAT='r: %R, u: %U, s: %S' 

+0

+1興味深いトリック。 – neuro

+1

偉大な、ありがとう! (申し訳ありませんが返事にはとても時間がかかりました) – mark

6

Another stackoverflow threadは基本的に同じ質問をカバーしています。整数としての秒数を表示するには...

trap 'SECONDS=0' DEBUG 
export PS1='your_normal_prompt_here ($SECONDS) # ' 

、または:そのスレッドでの私の答えは、のように要約することができ

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)) # ' 

「Ddays、HH ..for:MM:SS先行する空の値が削除されます。

関連する問題