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

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

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

dmesg | less

虽然我知道这是什么输出,它需要dmesg并让我滚动它less,我不明白|它在做什么。它恰恰相反>吗?

  • 对于什么有简单或隐喻的解释|

  • 在一条线路中使用多个管道时会发生什么?

  • 管道的行为在Bash脚本中出现的位置是否一致?


holdtom
浏览 529回答 3
3回答

收到一只叮咚

Unix中的每个标准进程至少有三个文件描述符,它们有点像接口:标准输出,即进程打印其数据的位置(大多数情况下是控制台,即屏幕或终端)。标准输入,它是从中获取数据的地方(大多数情况下它可能类似于键盘)。标准错误,这是错误和有时其他带外数据发生的地方。它现在没有意思,因为管道通常不处理它。管道将过程的标准输出连接到左侧的过程的标准输入。您可以将其视为一个专用程序,负责复制一个程序打印的所有内容,并将其提供给下一个程序(管道符号后面的程序)。这不是那个,但它足够类比。每个管道只运行两件事:标准输出来自其左侧,输入流预期位于其右侧。其中每个都可以附加到单个进程或管道的另一个位,这是多管道命令行中的情况。但这与管道的实际操作无关;&nbsp;每个管道都有自己的。重定向operator(>)执行相关操作,但更简单:默认情况下,它将进程的标准输出直接发送到文件。正如你所看到的那样,它不是管道的反面,而是实际上是互补的。>不足为奇的是<,它获取文件的内容并将其发送到进程的标准输入(将其视为一个逐字节读取文件并在进程中为您键入文件的程序)。
打开App,查看更多内容
随时随地看视频慕课网APP