Я пытался перенаправить вывод команды времени, но я не мог:
$time ls > filename
real 0m0.000s
user 0m0.000s
sys 0m0.000s
В файле I видят вывод ls
команда, не команда time
. Объясните, почему я не мог и как сделать это.
вы можете перенаправить вывод времени, используя,
(time ls) &> file
Потому что вам нужно взять (time ls) как одну команду, чтобы вы могли использовать фигурные скобки.
время встроено в оболочку, и я не уверен, есть ли способ его перенаправить. Однако вместо этого вы можете использовать
/ usr / bin / time
, который определенно принимает любые перенаправления вывода.
Команда time отправляет вывод на STDERR (вместо STDOUT). Это потому, что команда, выполняемая вместе с time, обычно (в данном случае ls) выводит данные на STDOUT.
Если вы хотите захватить вывод time, то введите:
(time ls) 2> filename
Это захватит только вывод time, а вывод ls пойдет в консоль. Если вы хотите захватить оба вывода в один файл, введите:
(time ls) &> filename
2> перенаправляет STDERR, &> перенаправляет оба.
нет необходимости запускать sub shell. Достаточно использовать блок кода.
{ time ls; } 2> out.txt
или
{ time ls > /dev/null 2>&1 ; } 2> out.txt