2
~$ /usr/bin/time -f "%e: " echo test
test
0.00: 

Я хочу, чтобы результат был

0,00: тест

Как бы я это сделал?

3 ответа3

6

Если вы не запрашиваете какую-либо форму путешествий во времени, вам нужно было бы захватить выходные данные и изменить их порядок. time выводит свой результат по стандартной ошибке.

$ /usr/bin/time -f "%e: " echo test >so 2>se; echo $(<se) $(<so)
0.01: test
1

Как говорится в ответе геекозавра, время выводится на стандартный вывод, а ваша команда выводит на стандартный вывод. И время ждет, пока ваша команда завершит работу, прежде чем записать свой вывод. Я думаю, что вы должны попробовать программную sponge из пакета moreutils, вот так:

/usr/bin/time -f "%e: " echo test | sponge

Губка - это программа, которая впитывает весь ввод и записывает его, когда ввод закрывается (т.е. предыдущая программа завершается). Вышеописанное работает, потому что время будет печататься в stderr, когда эхо закончится, и вывод эха будет пропитан губкой, которая отжимается только тогда, когда заканчивается левая сторона. Насколько я могу судить, это делает в значительной степени то, что вы хотите, хотя я не смог проверить его на полную точность, потому что моя система /usr /bin /time не поддерживает опцию -f.

0

Я не думаю, что это возможно. Один из способов сделать это - записать вывод в переменную и манипулировать ею.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .