【问题标题】:What is the difference between & and | in linux?& 和 | 有什么区别?在Linux?
【发布时间】:2013-11-09 10:18:10
【问题描述】:

我明白了|将第一个命令的输出通过管道传输到第二个命令的标准输入。 & 如何关联两个过程?

【问题讨论】:

    标签: linux bash process terminal pipe


    【解决方案1】:

    可能您想了解&& 而不是&(用于在后台执行命令)

    这个命令:

    command1 | command2
    

    表示将command1的输出作为command2的输入(stdin)传递

    但是在这个命令中:

    command1 && command2
    

    意味着只有在 command1 成功时才执行 command2

    【讨论】:

    • 问题是关于 &,而不是 &&,尽管 OP 的意思可能是 &&
    • @pfnuesel:从 OP 的措辞中几乎可以肯定,即使 OP 写了&,但它实际上是在要求&&
    • 然后在你的答案中注明。
    • 也许您应该用粗体字母提及这一点。那么这篇文章确实可能对 OP 有所帮助
    • 如果没有第一行,如果没有人告诉他,操作员将如何理解语法的细微差别?我收回了我的反对票。为什么它仍然被否决,我不明白。投反对票的人应该发表评论。
    【解决方案2】:

    单个符号(&) 用于背景。它使命令在后台运行。

    同样来自man bash

    如果命令被控制操作符 & 终止,shell 在子 shell 的后台执行命令。外壳可以 不等待命令完成,返回状态为0。

    如果你这样写:

    find -name hello &
    

    这将使find 命令分叉并在后台运行

    在您的情况下,单个 & 与这两个过程没有任何关系。

    你可能正在寻找

    command1 && command2
    

    【讨论】:

      【解决方案3】:

      & 不以任何方式关联两个进程;它在“后台”启动一个进程,以便您正在运行的 shell 继续其工作,而无需像往常一样等待进程终止。

      你可能在想&&。命令行

      command 1 && command 2
      

      首先执行command 1,如果成功(退出状态码为0)则执行command 2。复合的退出状态为第一个命令不成功的退出状态,否则为2的退出状态。

      例如,以下命令行可用于从源代码安装 Unix 软件,但前提是它已成功配置、编译并运行所有测试。

      ./configure && make && make test && make install
      

      【讨论】:

        猜你喜欢
        • 2018-11-26
        • 1970-01-01
        • 2023-02-10
        • 2012-11-27
        • 2020-01-02
        • 2015-01-02
        • 2018-08-29
        • 1970-01-01
        相关资源
        最近更新 更多