2013-02-26 153 views
0

如何讓bash將多輸出命令的輸出重定向到多行文件。例如:如何讓bash將多行格式的命令輸出重定向到文件

rsync --progress -v /source /destination >> file.txt  

貓file.txt的將給予:

file1 file2 file3 

的時候我想這個文件,看起來好像是這樣的終端或標準輸出上輸出:

file1 
file2 
file3 

謝謝, Corey

+0

你也許有一個更完整,獨立的例子嗎?您的rsync命令不會輸出任何接近「file1 file2 file3」的內容,它包含每個傳輸的進度信息和統計信息。 – 2013-02-27 00:02:04

+0

如果通過貓管道輸出,rsync輸出是否仍然出現在多行上? 'rsync --progress -v/source/destination | cat'如果不是,那麼rsync的行爲就會有所不同,這取決於它的輸出是否是終端,所以你必須使用像[unbuffer](http://expect.sourceforge.net/example/unbuffer.man.html)這樣的程序。愚弄它認爲它仍在寫給終端。 – 2013-02-27 00:04:26

+0

我實際上使用「s3cmd sync」和 - no-progress標誌。 – Stromweld 2013-02-27 22:47:11

回答

0

如果您只是想將空格轉換爲換行符,請使用tr

rsync --progress -v /source /destination | tr ' ' '\012' >> file.txt 
+0

'\ 012'是做什麼的? – Stromweld 2013-02-27 20:55:48

+0

十進制值10爲八進制,例如換行ASCII字符。 – hlovdal 2013-02-27 21:26:36

0

實際上,我是使用命令「s3cmd同步--no正在進行/源/目標>> file.txt的」管道通過其工作的貓。謝謝您的幫助。 「| tr'''/ 012'>> file.txt」也起作用,但它將行上的每個空間都視爲新行。謝謝您的幫助。

相關問題