4

Из двух псевдонимов C-оболочки ниже, только сначала печатает отчет Команды Времени по затраченному времени. Как я могу получить псевдоним с конвейером для печати отчета о времени?

alias make1 'time make'

alias make2 'time make |& tee make.log'

2 ответа2

7

Команда time, встроенная в оболочку C (csh или tcsh), не работает с конвейерами. Чтобы обойти это ограничение, используйте автономное время команду вместо, который обычно находятся в / USR / BIN / время (если это не так , попробуйте whereis time , чтобы найти его).

Измените time в командной строке на /usr/bin/time (или /usr/bin/time -p) или на любой другой путь к программе времени, и она должна работать.


Почему это не сработало:

Оболочка C (как и некоторые другие оболочки) имеет встроенную команду времени (см встроенную справочную страницу), которая используется в предпочтении к программе времени не встроенная_команда_оболочки (автономный):

% which time
time: shell built-in command.
% 

и страница руководства для csh (на самом деле tcsh в моей системе) гласит:

time [command]
   Executes command (which must be a simple command, not an alias,
   a pipeline, a command list or a parenthesized command list) ...

Команда /usr /bin /time не имеет этого ограничения, равно как и встроенные команды времени большинства других оболочек, например, bash или zsh.

0

Вы хотели использовать там трубу? То, что вы по существу делаете, это отправка результата второй команды time в tee . Вот почему ваш результат не распечатывается - скорее всего, он записывается в make.log.

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