返回顶部
首页 > 资讯 > 操作系统 >linux管道符的作用是什么
  • 721
分享到

linux管道符的作用是什么

linux 2023-04-20 20:04:38 721人浏览 薄情痞子
摘要

本文小编为大家详细介绍“linux管道符的作用是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux管道符的作用是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

本文小编为大家详细介绍“linux管道符的作用是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux管道符的作用是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

在linux中,管道符“|”的作用是连接多条指令,前一条指令的输出流会作为后一条指令的操作对象,其命令格式为“指令1 | 指令2 | …”,该命令的后一条指令,必须能够接收标准输入流命令才能执行。管道符主要用于多重命令处理,前面命令的打印结果作为后面命令的输入。

管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入。常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别。

有名管道叫named pipe或者FIFO(先进先出),可以用函数mkfifo()创建。

linux中的|管道符

| 管道符的作用是连接多条指令,前一条指令的输出流会作为后一条指令的操作对象,其命令格式为“指令1 | 指令2 | …”,该命令的后一条指令,必须能够接收标准输入流命令才能执行。

管道命令的操作符是:”|”,它只能处理由前面一条指令传出的正确输出信息,对错误信息是没有直接处理能力的。然后,传递给下一条指令,作为操作对象。

语法:

指令1 | 指令2 | …

管道符主要用于多重命令处理,前面命令的打印结果作为后面命令的输入。简单点说就是,就像工厂的流水线一样,进行完一道工序后,继续传送给下一道工序处理…

举个栗子:对hello.sh文件进行排序去重以后找出包含"better"的行

命令为:cat hello.sh | sort | uniq | grep 'better’

  • 查看文本

  • 排序

  • 去重

  • 过滤

linux管道符的作用是什么

【1】第一道工序——查看文本

首先使用cat命令查看文本,打印到屏幕上内容即为cat命令的输出结果

[root@linuxforliuhj test]# cat hello.sh hello this is linux
be better
be better
i am lhj
hello this is linux
i am lhj
i am lhj
be better
i am lhj
have a nice day
have a nice day
hello this is linux
hello this is linux
have a nice day
zzzzzzzzzzzzzz
DDDddddd
gggggggggggggggggggg[root@linuxforliuhj test]#

【2】第二道工序——排序

将前面cat命令输出的结果通过管道丢给sort命令,所以sort命令是对前面cat命令输出的文本进行排序

[root@linuxforliuhj test]# cat hello.sh | sortbe better
be better
be better
dddddddd
gggggggggggggggggggg
have a nice day
have a nice day
have a nice day
hello this is linux
hello this is linux
hello this is linux
hello this is linux
i am lhj
i am lhj
i am lhj
i am lhj
zzzzzzzzzzzzzz[root@linuxforliuhj test]#

【3】第三道工序——去重

前面介绍uniq的文章中提到,sort跟uniq结合使用才能有效去重,所以通过管道将sort处理后输出的文本丢给uniq处理,所以uniq处理的是排序好的文本,可以进行有效去重

[root@linuxforliuhj test]# cat hello.sh | sort | uniqbe better
dddddddd
gggggggggggggggggggg
have a nice day
hello this is linux
i am lhj
zzzzzzzzzzzzzz[root@linuxforliuhj test]#

【4】第四道工序——过滤

最后一步过滤则同样是将前面命令即uniq命令处理后输出的文本进行过滤

[root@linuxforliuhj test]# cat hello.sh | sort | uniq | grep 'better'be better[root@linuxforliuhj test]#

重点来了!

重点来了!

重点来了!

以上的cat、sort、uniq、grep等命令均支持管道符,是因为这些命令均可从标准输入中读取要处理的文本(即从标准输入中读取参数);而对于部分命令,例如rm、kill等命令则不支持从标准输入中读取参数,只支持从命令行中读取参数(即rm命令后面必须指定删除的文件或者目录,kill命令后面必须要指定杀死的进程号等)

那什么样的命令支持管道,什么样的命令不支持管道呢?
一般情况下,处理文本的命令,例如sort、uniq、grep、awk、sed等命令均支持管道;像rm、ls这类的不是处理文本的命令均不支持管道

[root@linuxforliuhj test]# cat hello.sh | sortbe better
be better
be better
dddddddd
gggggggggggggggggggg
have a nice day
have a nice day
have a nice day
hello this is linux
hello this is linux
hello this is linux
hello this is linux
i am lhj
i am lhj
i am lhj
i am lhj
zzzzzzzzzzzzzz[root@linuxforliuhj test]#

sort后面没有参数时,则对管道符丢给它的前一个命令的输出结果进行处理(即前一个命令的标准输出作为本次命令的标准输入)

[root@linuxforliuhj test]# lsbeifen.txt  hello.sh  mk  read.ln  read.sh  read.txt  sub.sh[root@linuxforliuhj test]# ls | grep read.shread.sh[root@linuxforliuhj test]# ls | grep read.sh | rmrm: missing operand
Try 'rm --help' for more infORMation.[root@linuxforliuhj test]#

当rm后面不指定删除的文件时,则会报错丢失参数,所以,rm等命令不支持从标准输入读取参数,只支持在命令行指定参数,即指定删除的文件。

标准输入和命令行参数那个优先?

有如下两个文件

[root@linuxforliuhj test]# cat a.txt aaaa
dddd
cccc
bbbb[root@linuxforliuhj test]# cat b.txt 1111333344442222[root@linuxforliuhj test]#

执行命令:cat a.txt | sort

[root@linuxforliuhj test]# cat a.txt | sortaaaa
bbbb
cccc
dddd[root@linuxforliuhj test]#

当sort的命令行参数为空时,默认使用前一个命令的输出结果作为本次命令的输入

执行命令:cat a.txt | sort b.txt

[root@linuxforliuhj test]# cat a.txt | sort b.txt 1111222233334444[root@linuxforliuhj test]#

可以看到,当sort的命令行参数(此处为b.txt)不为空时,sort不会读取标准输入里的参数,而时读取命令行参数

执行命令:cat a.txt | sort b.txt -

[root@linuxforliuhj test]# cat a.txt | sort b.txt -1111222233334444aaaa
bbbb
cccc
dddd[root@linuxforliuhj test]#

" - "表示标准输入,即命令cat a.txt 的输出,相当与对文件b.txt和标准输入一起进行排序,相当于sort a.txt b.txt

[root@linuxforliuhj test]# sort a.txt b.txt1111222233334444aaaa
bbbb
cccc
dddd[root@linuxforliuhj test]#

读到这里,这篇“linux管道符的作用是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程服务器栏目。

--结束END--

本文标题: linux管道符的作用是什么

本文链接: https://lsjlt.com/news/201728.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • linux管道符的作用是什么
    本文小编为大家详细介绍“linux管道符的作用是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux管道符的作用是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2023-04-20
    linux
  • linux中管道符的作用是什么
    本文小编为大家详细介绍“linux中管道符的作用是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux中管道符的作用是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在linux中,管道符是“|”,主...
    99+
    2023-07-02
  • linux pipe无名管道的作用是什么
    Linux pipe无名管道是一种进程间通信机制,用于在两个进程之间传递数据。它允许一个进程的输出作为另一个进程的输入,从而实现进程...
    99+
    2023-08-22
    linux pipe
  • Linux管道命令有什么作用
    这篇文章主要讲解了“Linux管道命令有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux管道命令有什么作用”吧! ...
    99+
    2023-02-06
    linux
  • linux管道是什么及怎么使用
    本文小编为大家详细介绍“linux管道是什么及怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux管道是什么及怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
    99+
    2023-04-27
    linux
  • Linux中的管道和命名管道有什么用
    小编给大家分享一下Linux中的管道和命名管道有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在 Linux 中,pipe 能让你将一个命令的输出发送给另一...
    99+
    2023-06-16
  • linux管道的实现机制是什么
    今天小编给大家分享一下linux管道的实现机制是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-02-07
    linux
  • linux管道、EPIPE和SIGPIPE的关系是什么
    在Linux中,管道(pipe)是一种进程间通信的机制,可以将一个进程的输出与另一个进程的输入连接起来。管道使用了FIFO(先进先出...
    99+
    2023-10-22
    linux EPIPE SIGPIPE
  • linux中的管道与重定向是什么
    这篇文章主要介绍了linux中的管道与重定向是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux中的管道与重定向是什么文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2023-04-20
    linux
  • linux中管道的作用有哪些
    在Linux中,管道(|)的作用有以下几个方面:1. 连接命令:管道可以将一个命令的输出作为另一个命令的输入,实现两个或多个命令之间...
    99+
    2023-09-29
    linux
  • Linux中有名管道是什么意思
    这篇文章主要介绍Linux中有名管道是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、管道的概念管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式。1. 管道本质管道的...
    99+
    2023-06-15
  • Linux系统中管道命令是什么
    这篇文章给大家分享的是有关Linux系统中管道命令是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。管道命令是指处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作...
    99+
    2023-06-28
  • linux命令管道符如何使用
    在Linux中,命令管道符(|)用于将一个命令的输出作为另一个命令的输入。管道符的使用方法如下:command1 | command...
    99+
    2023-09-29
    Linux
  • linux归档管理器的作用是什么
    Linux归档管理器的作用是对文件和目录进行归档和压缩,以便节省磁盘空间和方便文件的传输和备份。它可以将多个文件和目录打包成一个归档...
    99+
    2023-10-08
    linux
  • linux中怎么使用&号和管道符号
    这篇文章将为大家详细讲解有关linux中怎么使用&号和管道符号,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。掌握连接各个命令之间的连接符号用法也是很重要的。实际上,命令的用法并不难,例如 mkdi...
    99+
    2023-06-27
  • MongoDB中怎么实现管道操作符
    MongoDB中怎么实现管道操作符,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。$group基本操作$group可以用来对文档进行分组,比如我想将订单按照城市进...
    99+
    2023-06-19
  • python中什么是管道
    今天就跟大家聊聊有关python中什么是管道,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pyth...
    99+
    2023-06-14
  • MongoDB中的聚合操作与管道使用方法是什么
    在MongoDB中,聚合操作是用于对文档进行数据处理和计算的操作。聚合操作通常通过聚合管道来实现,管道是由一系列操作组成的操作链,每...
    99+
    2024-05-07
    MongoDB
  • linux的作用是什么
    本文小编为大家详细介绍“linux的作用是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux的作用是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2023-03-09
    linux
  • Linux的管道命令怎么用
    这篇文章主要介绍“Linux的管道命令怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux的管道命令怎么用”文章能帮助大家解决问题。管道是一种多个进程之间进行通信机制,因为管道传输数据具有...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作