I need to measure the running time of an application, so I'm messing with TIMEFORMAT in order to print short format with the maximum precision available.
From the Bash Refence Manual:
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.
If this variable is not set, Bash acts as if it had the value
If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed.
But, whenever I set TIMEFORMAT the tabs and new lines are not expanding:
rafael@lip ~/time-tests $ time ls real 0m0.099s user 0m0.000s sys 0m0.002s rafael@lip ~/time-tests $ TIMEFORMAT='\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' rafael@lip ~/time-tests $ time ls \nreal\t0m0.002s\nuser\t0m0.000s\nsys\t0m0.002s
Why? and how to solve it?