bash で複数のコマンドの合計の時間計測するにはコマンドを括弧で囲む

試した環境

本題

ワンラインでtime command1; command2;とすると、command1の時間計測だけ行われます。

$ time sleep 1; sleep 2;

real    0m1.001s
user    0m0.001s
sys     0m0.000s

複数のコマンドの合計の時間計測をしたい場合はtime { command1; command2; }のように波括弧で囲みます。 開始の{の後にはスペースが必要です。

$ time { sleep 1; sleep 2; }

real    0m3.005s
user    0m0.005s
sys     0m0.000s

もしくは丸括弧で囲みます。 こちらは開始の(の後にはスペースがあってもなくても動きます。

$ time (sleep 1; sleep 2;)

real    0m3.003s
user    0m0.003s
sys     0m0.000s

ちなみに上記の波括弧や丸括弧を使う方法は GNU time では利用できません。

$ /usr/bin/time --version
GNU time 1.7
$ /usr/bin/time { sleep 1; sleep 2; }
-bash: syntax error near unexpected token `}'
$ /usr/bin/time (sleep 1; sleep 2;)
-bash: syntax error near unexpected token `sleep'

参考

Man page of TIME