2013-10-15 91 views
2

我想將進程的時間重定向到文件,並且進程本身重定向到文件。以下是我已經試過:將進程重定向到文件並將其重定向到文件

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

兩個文件(ltime.txtls-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

也許你被內置於shell的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是一個shell內置的是告訴shell忽略的內置插件。)

+0

這在OS X和Ubuntu的工作,但不是在debian 7.1 wheezy。我得到了兩個文件,但ltime.txt文件包含「-bash:/ usr/bin/time:沒有這樣的文件或目錄」我在/usr/include/time.h(其他地方)找到了time.h,但是我似乎無法找到「時間」。 locate命令輸出數百條...任何建議? – plamtrue

+0

如果你被困在內建中,請參閱我的答案。 – damienfrancois

+1

或者,您可以使用'command time ls -l> ls-l.txt 2> ltime.txt',如果命令關鍵字安裝在標準位置,它將找到外部命令。 – 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