bashでコマンドを自動的に時間計測するにはどうすればよいですか?


14

にはtcsh、変数がありますtime

   The time shell variable can be set to execute the time builtin command
   after the completion of any process that takes more than a given number
   of CPU seconds.

どうすればこれを行うことができbashますか?

回答:


14

bashソースを変更しなくても、まったく同じ効果を達成できるとは思いません。しかし、あなたは近くに行けますが、うまくいけばあなたに十分に近いです。

bashのハッキーなプリコマンドフックSECONDS変数を組み合わせて、邪魔にならない方法でウォールクロック時間を表示できます。Ville Laurikariによる簡単な実装を次に示します。関数timer_startおよびtimer_stopは、コマンドを開始する直前および次のプロンプトを表示する直前に実行されます。

function timer_start {
  timer=${timer:-$SECONDS}
}
function timer_stop {
  timer_show=$(($SECONDS - $timer))
  unset timer
}
trap 'timer_start' DEBUG
PROMPT_COMMAND=timer_stop
PS1='[last: ${timer_show}s][\w]$ '

timeすべてのコマンドの完全な情報を取得するには、Dennis Williamsonのおかげです

bind '"\C-j": "\C-atime {\C-e;}\C-m"'

コマンドを開始する代わりにCtrl+ を押すと、時間情報が表示されます。変更されたコマンドは構文的に正しくない場合があるため、再バインド(+ )は推奨されません。JEnterEnterCtrlM

最後のコマンドのウォールタイムをBashプロンプトに入力する方法を参照してください。そして、自動的にbashプロンプトで実行されたすべてのコマンドとshowタイミング?上のスタックオーバーフロー他の方法について(ほとんどはだけではなく、CPUの経過時間をリアルタイムに与えることに注意してください)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.