2017-05-22 16 views
1

我有一個printf命令將寫入一個文件,但不會打印到標準輸出。我想兩者都有,這樣我可以讓用戶看到發生了什麼,並且同時將記錄寫入日誌文件。如何讓printf寫入新文件,附加現有文件並寫入標準輸出?

printf "%s\n" "This is some text" "That will be written to a file" "There will be several lines" | tee -a bin/logfile.log > bin/newfile.conf

該命令追加到日誌文件,並寫入新文件,但沒有輸出寫到屏幕:(

OS:因爲你要重定向的Centos 7

回答

4

這是除tee以外,屏幕輸出還有> bin/newfile.conf,只需放下>及其後的所有內容即可。如果除了屏幕之外還想同時輸出這兩個文件,您可以使用兩次tee兩次,例如:

printf ... | tee -a bin/logfile.log | tee bin/newfile.conf 

這追加到LOGFILE.LOG並覆蓋newfile.conf,也寫出到屏幕上。根據需要使用或省略-a選項。

由於John1024 points out你也可以使用tee一旦因爲它接受多個文件名,但在這種情況下-aapplies to all filenames,但它可以在你想要的追加與覆蓋行爲是對所有文件相同的情況下非常有用。

+0

我實際上需要去2個文件,一個作爲一個新文件(conf文件),另一個追加(日誌文件),我可以'發球'兩次嗎? – bc81

+0

@ bc81是的,你可以'開球'兩次,並使用'-a'作爲你想追加的。我修正了這個例子。 'tee'就像是一個「管道」中的「tap」,你可以在管道命令鏈中隨時隨意多次使用它,以便將該流轉儲到文件中。 –

+0

謝謝,非常有幫助! – bc81