Check the default output format of bash
‘s built-in time
command:
# time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
You can use -p
option to output in POSIX
format:
# time -p
real 0.00
user 0.00
sys 0.00
From bash
source code, we know the the definitions of these two formats:
#define POSIX_TIMEFORMAT "real %2R\nuser %2U\nsys %2S"
#define BASH_TIMEFORMAT "\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS"
To decipher the meanings of them, we need to refer bash manual:
TIMEFORMAT
The value of this parameter is used as a format string specifying how the timing information for pipelines prefixed with the time reserved word should be displayed. The ‘%’ character introduces an escape sequence that is expanded to a time value or other information. The escape sequences and their meanings are as follows; the braces denote optional portions.
%%
A literal ‘%’.%[p][l]R
The elapsed time in seconds.%[p][l]U
The number of CPU seconds spent in user mode.%[p][l]S
The number of CPU seconds spent in system mode.%P
The CPU percentage, computed as (%U + %S) / %R.The optional p is a digit specifying the precision, the number of fractional digits after a decimal point. A value of 0 causes no decimal point or fraction to be output. At most three places after the decimal point may be specified; values of p greater than 3 are changed to 3. If p is not specified, the value 3 is used.
The optional l specifies a longer format, including minutes, of the form MMmSS.FFs. The value of p determines whether or not the fraction is included.
……
Take POSIX_TIMEFORMAT
as an example: %2R
denotes using second as time unit, and the precision is two digits after a decimal point; %2U
and %2S
are similar.
Now you can comprehend the output of time
, correct? Try using BASH_TIMEFORMAT
as a practice.