bash - Bash 中管道如何工作的简单解释是什么?

标签 bash pipe

我经常在 Bash 中使用管道,例如:

dmesg | less

虽然我知道这会输出什么,但它需要 dmesg 并让我用 less 滚动它,我不明白 | 是什么是在做。它只是 > 的反义词吗?

  • | 的作用是否有简单的或比喻性的解释?
  • 当在一条线路中使用多个管道时会发生什么情况?
  • 管道的行为在 Bash 脚本中出现的任何地方都一致吗?

最佳答案

Unix 管道将第一个进程的 STDOUT(标准输出)文件描述符连接到第二个进程的 STDIN(标准输入)。然后发生的事情是,当第一个进程写入其 STDOUT 时,第二个进程可以立即(从 STDIN)读取该输出。

使用多个管道与使用单个管道没有什么不同。每个管道都是独立的,只是简单的链接相邻进程的STDOUT和STDIN。

你的第三个问题有点模棱两可。是的,管道本身在 bash 脚本中的任何地方都是一致的。然而,管道符 | 可以代表不同的东西。双竖线 (||),例如表示“或”运算符。

关于bash - Bash 中管道如何工作的简单解释是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834086/

相关文章:

linux - 如何检查一个文件是否是另一个文件的一部分?

bash - Bash 中的表达式递归级别超出错误

python - 如何让 Python 的 subprocess() 与 input() 交互?

perl - 在关闭文件句柄时向 perl 脚本发送信号

javascript - 替换两个 JavaScript 注释之间的代码

arrays - 将 bash 数组(字符串和特殊字符)写入文件

linux - 如何将 Linux which 命令的输出通过管道传输到 Linux 文件命令中?

c - 在 C 中使用管道进行父子 IPC 会使程序阻塞

python - 子进程不会实时显示来自 tcpdump 的数据。它显示暂停约 10-20 秒

linux - 从另一个 script2.sh 调用 bash 时找不到 ./script1.sh