Ответ 1
вы можете перенаправить вывод времени с помощью
(time ls) &> file
Потому что вам нужно взять (время ls) как одну команду, чтобы вы могли использовать фигурные скобки.
Я попытался перенаправить вывод команды времени, но не смог:
$time ls > filename
real 0m0.000s
user 0m0.000s
sys 0m0.000s
В файле я вижу вывод команды ls
, а не time
.
Пожалуйста, объясните, почему я не мог и как это сделать.
вы можете перенаправить вывод времени с помощью
(time ls) &> file
Потому что вам нужно взять (время ls) как одну команду, чтобы вы могли использовать фигурные скобки.
нет необходимости запускать подклассу. Используйте блок кода также.
{ time ls; } 2> out.txt
или
{ time ls > /dev/null 2>&1 ; } 2> out.txt
Время команды отправляет его на STDERR (вместо STDOUT). Это потому, что команда, выполняемая со временем обычно (в этом случае ls) выводит на STDOUT.
Если вы хотите записать вывод времени, введите:
(time ls) 2> filename
Это фиксирует только выход времени, но вывод ls идет в нормальное состояние на консоль. Если вы хотите записать оба в одном файле, введите:
(time ls) &> filename
2 > перенаправляет STDERR, & > перенаправляет оба.
время - это встроенная оболочка, и я не уверен, есть ли способ перенаправить ее. Однако вы можете использовать
/usr/bin/time
вместо этого, которые определенно согласуют любые перенаправления вывода.
Если вы не хотите смешивать вывод из time
и команды.
С GNU-временем вы можете использовать -o file
как:
/usr/bin/time -o tim grep -e k /tmp 1>out 2>err
while tim
выводится время, out
и err
являются stdout и stderr из grep
.