2010-05-26 51 views
2

我有一個小的bash功能登錄我的MacPorts輸出到文件(因爲安裝經常噴出的小花絮,很容易在終端噪聲輸),然後我就貓文件到終端:如何在Unix中同時寫入文件並打印到終端?

function porti { 
    command sudo port install [email protected] >> $1.log 2>&1; cat $1.log 
} 

有沒有辦法同時做到這一點?

BTW我通過$ @安裝,但只有1 $的文件名,這樣我可以這樣做:

porti git-gore +bash_completion 

,只得到文件混帳core.log但是有人否則可能更喜歡以包括文件名變種...

回答

8

通常的解決辦法是使用三通(1)

sudo port install [email protected] 2>&1 | tee -a $1.log 

應該做你想做的事

+0

你瘋了Unix的人讓我吃驚!你怎麼知道命令tee(1)? – bias 2010-05-27 16:26:57

+0

tee是標準shellutils GNU軟件包的一部分,它包含大約二十個隨機命令,這些命令在shell腳本中很有用,並且已經存在了幾十年 – 2010-05-28 19:42:38