2015-12-07 137 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