2015-12-07 136 views
1

可能有人請解釋的bash的下面的行爲,如果我的理解是正確的:猛砸重定向

  1. echo abcd > abc def

    回聲ABCD打印出來到std出流,而是因爲由於的「>」,它被重定向到文件ABC 存在如何DEF存儲爲文件ABC而不是包含字符串ABCD另一個文件中的字符串?

  2. echo abcd > abc > def

    這將導致串ABCD被存儲在文件的def文件ABC保持爲空。怎麼樣 ?

謝謝。

回答

3

在此命令:>用於輸出文件名唯一參數後

echo abcd > abc def foo bar 

和其餘部分被用於echo。因此,您可以:

cat abc 
abcd def foo bar 

然後在下面的命令:

echo abcd > abc > def > xyz 

只有最後一個文件名後>將實際輸出的內容和其餘的將是空的:

cat xyz 
abcd 
cat def 
cat abc 

要存儲在多個輸出文件輸出使用tee像這樣(抑制STDOUT):

date | tee abc def xyz > /dev/null 

然後檢查內容:

cat abc 
Mon Dec 7 07:34:01 EST 2015 
cat def 
Mon Dec 7 07:34:01 EST 2015 
cat xyz 
Mon Dec 7 07:34:01 EST 2015