【问题标题】:Bash redirectionsBash 重定向
【发布时间】:2015-12-07 20:31:56
【问题描述】:

有人可以解释一下 bash 的以下行为,如果我的理解是正确的:

  1. echo abcd > abc def

    echo abcd 将其打印到标准输出流,但由于存在“>”,它被重定向到文件 abc def 如何作为字符串存储在文件 abc 中,而不是作为另一个包含字符串 abcd 的文件?

  2. echo abcd > abc > def

    这导致字符串 abcd 存储在文件 def 中,而文件 abc 保持为空。怎么样?

谢谢。

【问题讨论】:

    标签: bash sh


    【解决方案1】:

    在这个命令中:

    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(带有抑制的标准输出):

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 2012-02-04
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多