news 2026/9/7 20:35:35

竖线 |:管道、按位或、掩码组合

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
竖线 |:管道、按位或、掩码组合

一、前言

在 Linux 学习过程中,绝大多数人都会被同一个符号|搞混淆:

命令行里它是管道、代码里它是位运算、系统函数参数里它是标志叠加。

很多人疑惑:明明都是竖线,为什么功能完全不同?

标准答案:符号本身没有任何意义,解析环境决定意义。

Shell 解释器、C语言编译器、Linux 内核,三套完全不同的解析规则,互不干涉。


二、Shell 终端中:| 是「管道符」

1. 作用

Shell 里的|和数学运算没有任何关系

它的唯一作用:把前一个命令的输出,交给后一个命令当输入,实现进程数据接力。

2. 特点

  • 多个命令同时运行(流水线并发)

  • 数据在内存流动,不产生临时文件

  • 下游依赖上游输出,实现链式数据处理

3. 示例

ls -l | grep txt | wc -l cat app.log | grep error | awk '{print $5}' | sort | uniq -c

4. Shell 极易混淆四组符号

  • |管道:数据接力

  • ||逻辑或:前命令失败,才执行后命令

  • && 逻辑与:前命令成功,才执行后命令

  • & 后台并行:两个命令独立同时跑


三、编程语言中:| 是「按位或运算符」

在 C / C++ / Python / Java 中,|是标准二进制位运算,纯粹数学计算,和管道无关。

1. 运算规则

有1则1,全0才0,逐位独立计算。

0b0010 | 0b0100 = 0b0110

2. 基础示例

int a = 2; // 0010 int b = 4; // 0100 int res = a | b; // 0110 = 6

四、系统编程中:| 是「掩码叠加」(最容易混淆)

你写 open、socket、epoll 时看到的:

O_WRONLY | O_CREAT | O_TRUNC

这里绝对不是管道,是标准按位或运算。

1. 内核 flag 本质

Linux 所有 flag 本质都是整数掩码

每一个二进制 bit 代表一个开关功能。

内核宏定义简化如下:

#define O_WRONLY 0001 // 只写 #define O_CREAT 0100 // 不存在则创建 #define O_TRUNC 1000 // 存在则清空

2. 按位或叠加多个功能

使用|可以同时开启多个开关:

0001 O_WRONLY | 0100 O_CREAT | 1000 O_TRUNC = 1101

最终结果同时拥有:只写、创建、清空三种能力。

3. 为什么不能用加号 +

加法会进位、会丢 bit,会导致功能错乱;

按位或只置1、不进位,是唯一安全的叠加方式。

#define A 0b0010 #define B 0b0010 A + B = 0b0100 // 错误,进位丢失 A | B = 0b0010 // 正确,保留开关状态

4. 经典系统调用统一写法

// 文件打开 open("test.txt", O_WRONLY | O_CREAT | O_TRUNC, 0664); // 非阻塞 socket socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0); // epoll 多事件监听 ev.events = EPOLLIN | EPOLLOUT;

五、一张表彻底终结混淆

使用场景

符号含义

本质

示例

Shell 命令行

管道符

进程数据流传递

ls | grep txt

代码数值运算

按位或

二进制数学运算

x = a | b

系统函数 flag

掩码按位或

叠加多个功能开关

O_WRONLY|O_CREAT


六、最终总结

  • 终端里的|管道,负责命令数据流接力;

  • 代码里的|按位或,负责二进制运算;

  • open/socket 参数里的|掩码叠加,用来组合多个系统功能;

  • 永远不要用+代替|组合系统标志;

  • 符号不决定功能,环境决定一切

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 20:33:30

ab视频抖音允许吗,2026年视频融合工作流,5款横评实测

ab视频抖音允许吗:先看懂平台在查什么做矩阵号、二创号、带货切片的人,几乎都会遇到一个问题:把两条甚至多条素材拼到一起后,发出去要么被判搬运,要么流量极低。于是「AB 视频」「AB 融帧」这套思路被反复讨论&#xf…

作者头像 李华
网站建设 2026/9/7 20:31:17

水下检测新视角:船体与海底管道水下机器人巡检方案

船舶与海底管道长期处于高盐、高压、低能见度环境,人工潜水或停航抽排等传统方式存在成本高、风险大、记录不完整的问题。瀚泰装备将水下机器人、声呐、高清视觉与岸基管理平台结合,形成覆盖船体、螺旋桨、码头桩基、海底管道和港口水下结构的可追溯检测…

作者头像 李华
网站建设 2026/9/7 20:31:07

2026自考毕业论文降AI率工具实测:10款神器优缺点全解析

每年一到论文季,后台就会涌进来一大批自考同学问同一个问题:“毕业论文用AI写完,学校检测出来怎么办?”今年更夸张,好几个同学直接发来截图,说自己只是用AI润色了一下,结果被系统标了高比例“疑…

作者头像 李华
网站建设 2026/9/7 20:30:52

深度相机接入AI服务器:点云链路优化与工程化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 20:29:13

ai漫剧做出来了怎么赚钱,2026年漫剧工作流,5款对比横评

ai漫剧做出来了怎么赚钱:先把链路跑通很多团队刚跑通一条AI漫剧,就开始问「发出去能有多少收益」。现实是,漫剧变现的核心从来不是单条作品,而是「日更产能 角色一致性 分发渠道」这套工程化链路。如果制作端还停留在反复抽卡、…

作者头像 李华