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

2024-07-03

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

dmesg | less

虽然我知道这会输出什么,但这需要dmesg让我滚动浏览它less,我不明白什么|是在做。是不是正好相反>?

  • 有没有一个简单的或隐喻的解释| does?
  • 当一条管线中使用多个管道时会发生什么情况?
  • 管道的行为在 Bash 脚本中出现的所有地方都一致吗?

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bash 中管道如何工作的简单解释是什么? 的相关文章

  • 从名称获取 AWS EMR 集群 ID

    AWS CLI 命令aws emr list clusters返回以下 json 有没有一种方法可以通过 bash 或 groovy 使用名称来获取 Id 我不能只使用 ID 因为我正在删除集群并仅使用相同的名称重建它们 所以我知道集群的名
  • 将 bash 脚本转换为 python(小脚本)

    我有一个在 Linux 环境中使用的 bash 脚本 但现在我必须在 Windows 平台上使用它 并且希望将 bash 脚本转换为可以运行的 python 脚本 bash 脚本相当简单 我认为 我尝试通过 google 转换它 但无法成功
  • 使用列命令时出现 Bash 错误:“列:行太长”

    当我使用输入文件键入此列命令时 出现以下错误 column t text txt gt output column line too long column line too long column line too long column
  • 如何在 xargs 命令中使用 >?

    我想找到一个 bash 命令 它可以让我 grep 目录中的每个文件 并将该 grep 的输出写入一个单独的文件 我的猜测是做这样的事情 ls 1 xargs I grep ABC gt out 但是 据我所知 xargs 不喜欢双引号 但
  • printf 中的填充字符

    我正在编写一个 bash shell 脚本来显示进程是否正在运行 到目前为止 我得到了这个 printf 50s s n PROC NAME UP 该代码给了我这个输出 JBoss DOWN GlassFish UP verylongpro
  • git:每日更新日志

    如何生成按日期分组的提交变更日志 格式为 date today commit message1 commit message2 commit message3 date day 3 commit message1 commit messag
  • Bash:进程替换的范围是什么?

    据我所知 进程替换 创建 fd 并将括号中命令的输出存储到生成的 fd 中 因此 这两个命令是等价的 ls al cat lt ls al 在这里 我的问题是 生成的文件描述符保留多长时间 我读过这个 但似乎我的理解是错误的 如果进程替换被
  • 为什么 bash 无法识别套接字文件的存在

    在 Linux 机器上 我想检查特定的套接字文件是否存在 我知道套接字文件存在 但我在 bash 中的检查没有向我显示这一点 ls l var run supervisor sock srwxrw rw 1 root root 0 Jun
  • 如何在shell脚本中每2分钟查找目录中是否有新文件?

    我有一个名为 home user local 每隔两分钟左右 就会有一个新文件转储到此目录中 我需要每 2 分钟检查一次该目录 看看是否有新文件进入其中 如果有新文件 我需要将其列表放入变量中以供稍后使用 我该如何执行这个 shell 脚本
  • zsh 像 bash 一样迭代

    我最近从 bash 切换到 zsh 但不知道如何实现这一点 bash list aaa gt bbb gt ccc gt ddd for i in list do echo i xxx done aaa xxx bbb xxx ccc xx
  • 如何显示带有完整路径或文件名的“grep”结果[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 使用时如何获取完整的文件路径grep 我使用类似的命令 cat log grep somethingtosearch 我需要显示结果以及从
  • 使用华为 E8372 hilink 通过 bash 脚本发送短信

    我正在尝试从华为 E8372 发送短信 与该产品的旧版本不同 它现在需要登录 用户名 密码 才能允许进行 API 调用 从https github com arska e3372 issues 1 https github com arsk
  • find -regex 比 find | 慢grep

    我有一个使用正则表达式查找文件的脚本 代码如下 find dir grep regex 该脚本运行有点太慢 我想优化它 搜索需要一些时间来执行 我希望从中获得更好的性能 我尝试过这个尝试 find dir regex regex 我预计结果
  • 以与 Bash 相同的方式转义文件名

    当我使用 tab 键时bash 当您开始输入文件名并希望其完成时 bash正确转义文件名 如果我完全使用 转义 文件名 它就可以工作 例如 An Beat Mentally Insine Original Mix mp3 gt 之后bash
  • 如何进入各个目录并执行命令?

    如何编写一个 bash 脚本来遍历 Parent directory 中的每个目录并executes a command in 每个目录 目录结构如下 parent directory 名称可以是任何内容 不遵循模式 001 directo
  • 使用linux bash替换文件中两个字符串之间的文本

    我有文件 acl txt 192 168 0 1 192 168 4 5 start exceptions 192 168 3 34 192 168 6 78 end exceptions 192 168 5 55 和另一个文件 例外 19
  • Bash 脚本:Gzip 整个文件夹并保持文件扩展名相同[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想递归地对文件夹中的每个文件进行 gzip 压缩 并在压缩后保留原始名称和扩展名 我尝试过 sudogzip 9 r folder但是现在每个文件都
  • 在 Bash 中使用大小写表示数字范围

    我正在尝试使用以下方法进行操作case在 Bash 中 在 Linux 中 如果X在460到660之间 则输出X信息 如果 X 介于 661 和 800 之间 请执行其他操作 Etc 现在这就是我所拥有的 case MovieRes in
  • 在 Python 中运行 Bash 命令

    在我的本地计算机上 我运行一个包含此行的 python 脚本 bashCommand cwm rdf test rdf ntriples gt test nt os system bashCommand 这很好用 然后我在服务器上运行相同的
  • Shell 脚本在延迟后生成进程

    如何在 shell 脚本延迟后生成进程 我希望命令在脚本启动 60 秒后启动 但我想继续运行脚本的其余部分 而不先等待 60 秒 想法是这样的 bin sh Echo A 60 seconds later but without block

随机推荐