~$ /usr/bin/time -f "%e: " echo test
test
0.00:
Я хочу, чтобы результат был
0,00: тест
Как бы я это сделал?
Если вы не запрашиваете какую-либо форму путешествий во времени, вам нужно было бы захватить выходные данные и изменить их порядок. time
выводит свой результат по стандартной ошибке.
$ /usr/bin/time -f "%e: " echo test >so 2>se; echo $(<se) $(<so)
0.01: test
Как говорится в ответе геекозавра, время выводится на стандартный вывод, а ваша команда выводит на стандартный вывод. И время ждет, пока ваша команда завершит работу, прежде чем записать свой вывод. Я думаю, что вы должны попробовать программную sponge
из пакета moreutils
, вот так:
/usr/bin/time -f "%e: " echo test | sponge
Губка - это программа, которая впитывает весь ввод и записывает его, когда ввод закрывается (т.е. предыдущая программа завершается). Вышеописанное работает, потому что время будет печататься в stderr, когда эхо закончится, и вывод эха будет пропитан губкой, которая отжимается только тогда, когда заканчивается левая сторона. Насколько я могу судить, это делает в значительной степени то, что вы хотите, хотя я не смог проверить его на полную точность, потому что моя система /usr /bin /time не поддерживает опцию -f.
Я не думаю, что это возможно. Один из способов сделать это - записать вывод в переменную и манипулировать ею.