2013-10-15 3 views
2

Я хотел бы перенаправить время процесса в файл, и сам процесс перенаправляется в файл. Вот что я пытался:перенаправить процесс в файл И перенаправить свое время на файл

time &> ltime.txt echo | ls -l > ls-l.txt 

Оба файла (ltime.txt и ls-l.txt) созданы, но ltime.txt пуст.

time еще выводит на экран, , который хорошо в моем случае, , но я ожидал, что это не сделать это из-за &>:

real 0m0.034s 
    user 0m0.000s 
    sys  0m0.004s 

(Все, что я знаю об этом пришел от http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html)

Любые предложения?

+0

Почему «эхо»? – damienfrancois

+0

вы правы; эхо постороннее. – plamtrue

ответ

1

Возможно, вас укусил time, который встроен в оболочку? Попробуйте это:

/usr/bin/time ls -l > ls-l.txt 2> ltime.txt 

От man time:

Users of the bash shell need to use an explicit path in order to run 
    the external time command and not the shell builtin variant. 

[Обновлено добавить]

Видимо расположение time не полностью стандартны. Для одноразового использования (и для общей информации) which time расскажет вам, где он находится. Для портативного скрипта вы можете сказать command time .... (command это оболочка, которая сообщает встроенная оболочка игнорировать встроенные модули.)

+0

Это работало в os x и в ubuntu, но не в debian 7.1 wheezy. Я получаю оба файла, но файл ltime.txt содержит «-bash:/usr/bin/time: Нет такого файла или каталога» Я нашел time.h в /usr/include/time.h (среди других мест), но я похоже, не может найти «время». Команда locate выводит сотни записей ... любые предложения? – plamtrue

+0

Если вы застряли со встроенным, см. Мой ответ. – damienfrancois

+1

В качестве альтернативы вы можете использовать 'command time ls -l> ls-l.txt 2> ltime.txt', ключевое слово' command' найдет внешнюю команду, если она будет установлена ​​в стандартном местоположении. – damienfrancois

1

Попробуйте

{ time ls -l > ls-l.txt ; } &> ltime.txt 

Фигурные скобки захватить выход даже с встроенной командой.

+0

Спасибо, но мне кажется, что это не работает. ltime.txt пуст. – plamtrue

+0

Это то, что он дает на моем Mac: '$ {time ls -l> ls-l.txt; } &> Ltime.txt $ кошка ltime.txt реального \t 0m0.097s пользователь \t 0m0.002s SYS \t 0m0.009s ' – damienfrancois

Смежные вопросы