Я попытался перенаправить вывод команды time, но не смог:
$time ls > filename
real 0m0.000s
user 0m0.000s
sys 0m0.000s
В файле я вижу результат выполнения ls
команды, а неtime
. Объясните, почему я не смог и как это сделать.
shell
unix
time
io-redirection
Abubacker
источник
источник
Ответы:
вы можете перенаправить вывод времени, используя,
Потому что вам нужно взять (time ls) как одну команду, чтобы вы могли использовать фигурные скобки.
источник
&>
просьбе, где я могу об этом узнать?&>file
аналогичен>file 2>&1
. Он управляет как stdout, так и stderr.не нужно запускать суб-оболочку. Также можно использовать блок кода.
или
источник
2>
просьбе. Где я могу узнать об этом?Команда time отправляет вывод в STDERR (вместо STDOUT). Это потому, что команда, выполняемая со временем, обычно (в данном случае ls) выводится в STDOUT.
Если вы хотите зафиксировать вывод времени, введите:
Это фиксирует только вывод времени, но вывод ls идет нормально на консоль. Если вы хотите записать оба в один файл, введите:
2> перенаправляет STDERR, &> перенаправляет оба.
источник
time - встроенная оболочка, и я не уверен, есть ли способ ее перенаправить. Однако вы можете использовать
/usr/bin/time
вместо него, который определенно принимает любые перенаправления вывода.источник
bash time mycmd 2>file
. Или просто позвоните,/usr/bin/time
как было сказано.Если вы не хотите смешивать вывод
time
и команду. Со временем GNU вы можете использовать что-то-o file
вроде:while
tim
- это вывод времени,out
аerr
из stdout и stderrgrep
.источник
Причина, по которой перенаправление, похоже, не работает,
time
заключается в том, что это зарезервированное слово bash (а не встроенное!) При использовании перед конвейером. bash (1):Итак, чтобы перенаправить вывод
time
, используйте фигурные скобки:Или позвоните
/usr/bin/time
:источник
Для тестирования я использую перенаправление stdout и stderr с фигурными скобками.
Символ
&>>rpt
представляет это,>>rpt 2>&1
но короче.Фигурные скобки будут выполнять команду (ы) в текущей оболочке. Смотрите: man bash
источник