使用输入输出重定向与管道命令——管道

简介: 使用输入输出重定向与管道命令——管道。

许多Linux命令具有过滤特性,即一条命令通过标准输入端口接收一个文件中的数据,命令执行后产生的结果数据又通过标准输出端口送给后一条命令,作为该命令的输入数据。后一条命令也是通过标准输入端口接收输入数据。
shell提供管道命令“|”将这些命令前后衔接在一起,形成一个管道线。格式为
命令1|命令2|...|命令n
管道线中的每一条命令都作为一个单独的进程运行,每一条命令的输出作为下一条命令的输入。由于管道线中的命令总是从左到右顺序执行的,所以管道线是单向的。
管道线实现了创建Linux系统管道文件并进行重定向,但是管道不同于I/O重定向,输入重定向导致一个程序的标准输入来自某个文件,输出重定向是将一个程序的标准输出写到一个文件中,而管道是直接将一个程序的标准输出与另一个程序的标准输入相连接,不需要经过任何中间文件。
例如:
$who >tmpfile
运行命令who来找出谁已经登录进入系统。该命令的输出结果是每个用户对应一行数据,其中包含了一些有用的信息,将这些信息保存在临时文件中。
运行下面的命令:
$ wc -l <tmpfile
该命令会统计临时文件的行数,最后的结果是登录进入系统中的用户人数。
可以将以上两个命令组合起来。
$ who|wc -l
管道符号告诉命令解释程序将左边的命令(在本例中为who)的标准输出流连接到右边的命令(在本例中为wc -l)的标准输入流。现在命令who的输出不经过临时文件就可以直接送到命令wc-l中了。
如果标准错误输出未重定向,那么任何写入其中的信息都会在终端屏幕上显示。管道可用来连接两个以上的命令。由于使用了一种被称为过滤器的服务程序,多级管道在Linux中是很普遍的。过滤器只是一段程序,它从自己的标准输入流读入数据,然后写到自己的标准输出流中,这样就能沿着管道过滤数据。例如:
$who|grep ttyp|wc-l

相关文章
|
存储 关系型数据库 数据库
Ganos全空间数据多态分层存储能力解析与最佳实践
本文介绍了Ganos与云原生关系型数据库PolarDB-PG联合打造的全空间数据多态分层存储能力与最佳实践。多态分层存储将OSS对象存储直接作为PolarDB-PG数据库的一种存储介质,可以与块存储联合使用,它支持用户将整库、单表、子分区表甚至是表内的一个LOB字段存储在OSS上,达到存储降本的目的,同时保持了增删改查的全部透明,并通过多级缓存保障了性能的最少衰减。多态分层存储是一种兼顾成本、性能与易用性的全空间数据管理方案,可极大程度降低业务开发的复杂度与云资源使用成本。
|
2月前
|
运维 容灾 调度
突破算力瓶颈:库存感知下的多地域 GPU 弹性调度
介绍多集群通过基于库存的弹性调度提供了 GPU 在多地域供给问题的解决方案。
消费级显卡微调可图Kolors最佳实践!
近期,快手开源了一种名为Kolors(可图)的文本到图像生成模型,该模型具有对英语和汉语的深刻理解,并能够生成高质量、逼真的图像。
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
1956 6
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
1000 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
设计模式 中间件 测试技术
深入理解PHP中的中间件模式
【8月更文挑战第31天】 在软件开发的海洋里,设计模式犹如灯塔指引着开发者的方向。本文将带你驶向一个特别的岛屿——PHP中间件模式,探索它如何简化代码、增强可读性与可维护性。我们将通过实际编码示例,展示如何在PHP中实现中间件模式,并讨论其对项目架构的影响。准备好了吗?让我们启航吧!
|
人工智能 算法 API
【Python+微信】【企业微信开发入坑指北】0. 创建自建应用并接入自己的服务
【Python+微信】【企业微信开发入坑指北】0. 创建自建应用并接入自己的服务
400 0
【Python+微信】【企业微信开发入坑指北】0. 创建自建应用并接入自己的服务
|
网络虚拟化 网络架构
单臂路由实验
单臂路由实验
|
编解码 算法 数据可视化
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
|
存储 人工智能 达摩院
带你读《云存储应用白皮书》之29:2. 物联网大数据存储解决方案
带你读《云存储应用白皮书》之29:2. 物联网大数据存储解决方案
441 18