Как я могу перенаправить вывод команды “времени”?

Я пытался перенаправить вывод команды времени, но я не мог:

$time ls > filename
real    0m0.000s
user    0m0.000s
sys     0m0.000s

В файле I видят вывод ls команда, не команда time. Объясните, почему я не мог и как сделать это.

89
задан Jens 19 August 2015 в 13:38
поделиться

4 ответа

вы можете перенаправить вывод времени, используя,

(time ls) &> file

Потому что вам нужно взять (time ls) как одну команду, чтобы вы могли использовать фигурные скобки.

98
ответ дан 24 November 2019 в 07:11
поделиться

время встроено в оболочку, и я не уверен, есть ли способ его перенаправить. Однако вместо этого вы можете использовать / usr / bin / time , который определенно принимает любые перенаправления вывода.

9
ответ дан 24 November 2019 в 07:11
поделиться

Команда time отправляет вывод на STDERR (вместо STDOUT). Это потому, что команда, выполняемая вместе с time, обычно (в данном случае ls) выводит данные на STDOUT.

Если вы хотите захватить вывод time, то введите:

(time ls) 2> filename

Это захватит только вывод time, а вывод ls пойдет в консоль. Если вы хотите захватить оба вывода в один файл, введите:

(time ls) &> filename

2> перенаправляет STDERR, &> перенаправляет оба.

24
ответ дан 24 November 2019 в 07:11
поделиться

нет необходимости запускать sub shell. Достаточно использовать блок кода.

{ time ls; } 2> out.txt

или

{ time ls > /dev/null 2>&1 ; } 2> out.txt
120
ответ дан 24 November 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: