LINUX.ORG.RU

Перенаправление в файл результата команды, использующей перенаправление

 


0

1

Хочется посчитать время выполнения команды типа cat file.txt > /dev/null, выведя его в файл reztime.txt, но такая команда time cat file.txt > /dev/null > reztime.txt не выводит ничего в reztime.txt. Как это можно исправить (поправив эту же строку, то есть без использования команд типа exec 1>reztime.txt)?

time cat file.txt | tee out1.txt out2.txt > /dev/null
Deleted
()
{ time cat file.txt; } 2> result.txt
anonymous
()
time { cat file.txt > /dev/null; } &> reztime.txt


должно работать

teod0r ★★★★★
()

Печально то, что тут никто не сказал, что на самом деле приведенная проблема не описывается как «Перенаправление в файл результата команды, использующей перенаправление». Доказательство простейшее:

/usr/bin/time cat file.txt > cat.out 2> time.out
В соответствующих файлах вы увидите результат и cat и time, так как нет никакого двойного перенаправления, просто для того, чтобы не смешивался вывод, невстроенная команда в shell работает со стандартным выводом для ошибок (дескриптором 2).

А вот встроенная в bash команда time работает по другому: вначале запускает указанную подкоманду с указанными редиректами, а потом уже выводит значения времени без использования редиректа.

Обход этой проблему тут приведен выше, скобочками, но это именно «устраненние специального поведения» команды time.

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.