为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2019-08-27 16:57:07
管道如何在Bash中工作的简单解释是什么?我经常在Bash中使用管道,例如:dmesg | less虽然我知道这是什么输出,它需要dmesg并让我滚动它less,我不明白|它在做什么。它恰恰相反>吗?对于什么有简单或隐喻的解释|?在一条线路中使用多个管道时会发生什么?管道的行为在Bash脚本中出现的位置是否一致?
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

Unix中的每个标准进程至少有三个文件描述符,它们有点像接口

  • 标准输出,即进程打印其数据的位置(大多数情况下是控制台,即屏幕或终端)。

  • 标准输入,它是从中获取数据的地方(大多数情况下它可能类似于键盘)。

  • 标准错误,这是错误和有时其他带外数据发生的地方。它现在没有意思,因为管道通常不处理它。

管道将过程的标准输出连接到左侧的过程的标准输入。您可以将其视为一个专用程序,负责复制一个程序打印的所有内容,并将其提供给下一个程序(管道符号后面的程序)。这不是那个,但它足够类比。

每个管道只运行两件事:标准输出来自其左侧,输入流预期位于其右侧。其中每个都可以附加到单个进程或管道的另一个位,这是多管道命令行中的情况。但这与管道的实际操作无关; 每个管道都有自己的。

重定向operator(>)执行相关操作,但更简单:默认情况下,它将进程的标准输出直接发送到文件。正如你所看到的那样,它不是管道的反面,而是实际上是互补的。>不足为奇的是<,它获取文件的内容并将其发送到进程的标准输入(将其视为一个逐字节读取文件并在进程中为您键入文件的程序)。


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 524 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信