本文主机频道详细介绍“linux管道符号的作用是什么”。内容详细,步骤清晰,细节处理得当。希望这篇文章《linux管道符号的作用是什么》能帮你解决疑惑。让我们按照主机频道的思路,一起学习新知识。
在linux中,管道符号“|”用于连接多个指令。前一条指令的输出流将是下一条指令的操作对象,其命令格式为“指令1 |指令2 | …”。该命令的下一条指令只有在可以接收标准输入流命令的情况下才能执行。流水线主要用于多命令处理,前一条命令的打印结果作为后一条命令的输入。
管道是Linux中一种非常重要的通信方式,它将一个程序的输出直接连接到另一个程序的输入。管道往往指的是无名管道,只能在相关进程之间使用,这是它和有名管道最大的区别。
一个著名的管道被命名为pipe或FIFO(先进先出),可以用函数mkfifo()创建。
linux中|管道符号|管道符号的作用是连接多条指令。前一条指令的输出流将作为下一条指令的操作对象,其命令格式为“指令1 |指令2 | …”。该命令的下一条指令只有在可以接收标准输入流命令的情况下才能执行。
流水线命令的操作符是“|”,只能处理前一条指令的正确输出信息,对错误信息没有直接处理能力。然后,作为操作对象传递给下一条指令。
语法:
指令1 |指令2 | …流水线符号主要用于多命令处理,前一条命令的打印结果作为后一条命令的输入。简单来说,就像工厂里的流水线,一道工序完成后,会继续传递到下一道工序进行加工…
以chestnut为例:在对hello.sh文件进行排序以消除重复之后,找出包含“better & quot线条
命令是:cat hello . sh | sort | uniq | grep & # 39;“更好”
查看文本
分类
移除重量
过滤器
[1]第一个流程-查看文本
首先使用cat命令查看文本,屏幕上打印的内容就是cat命令的输出结果。
[root @ linuxforlihj test]# cat hello . sh hello这是linux
变得更好
变得更好
我是lhj
你好,这是linux
我是lhj
我是lhj
变得更好
我是lhj
过得愉快
过得愉快
你好,这是linux
你好,这是linux
过得愉快
zzzzzzzzzzzz
dddddddd
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
把之前cat命令的输出结果通过管道扔给sort命令,这样sort命令就把之前cat命令输出的文本进行了排序。
[root @ linuxforlihj test]# cat hello . sh | sort be better
变得更好
变得更好
dddddddd
gggggggggggggggggggggggggggg
过得愉快
过得愉快
过得愉快
你好,这是linux
你好,这是linux
你好,这是linux
你好,这是linux
我是lhj
我是lhj
我是lhj
我是lhj
zzzzzzzzzzzz[root @ linuxforlihj test]#[3]第三步-去重
在介绍uniq的文章中提到,sort和uniq的结合可以有效的去除重复,所以排序处理后的文本输出通过管道扔给uniq处理,所以uniq对排序后的文本进行处理,可以有效的去除重复。
[root @ linuxforlihj test]# cat hello . sh | sort | uniqbe better
dddddddd
gggggggggggggggggggggggggggg
过得愉快
你好,这是linux
我是lhj
zzzzzzzzzzzzz[root @ linuxforlihj test]#[4]第四步——过滤
过滤的最后一步也是过滤前一个命令即uniq命令输出的文本。
[root @ linuxforlihj test]# cat hello . sh | sort | uniq | grep & # 39;更好& # 39;be better[root @ linuxforlihjtest]#重点来了!
重点来了!
重点来了!
上面的cat、sort、uniq、grep等命令都支持管道字符,因为这些命令可以从标准输入中读取待处理的文本(即从标准输入中读取参数);对于某些命令,比如rm和kill命令,不支持从标准输入中读取参数,只能从命令行读取(即删除的文件或目录必须在rm命令后指定,被杀死的进程号必须在kill命令后指定等等。).
那么哪些命令支持管道,哪些命令不支持呢?一般来说,处理文本的命令,如sort、uniq、grep、awk、sed等。,所有支持管道;不处理文本的命令(如rm和ls)不支持管道。
[root @ linuxforlihj test]# cat hello . sh | sort be better
变得更好
变得更好
dddddddd
gggggggggggggggggggggggggggg
过得愉快
过得愉快
过得愉快
你好,这是linux
你好,这是linux
你好,这是linux
你好,这是linux
我是lhj
我是lhj
我是lhj
我是lhj
当zzzzzzzzzzzzzzz[root @ linuxforlihjtest]# sort之后没有参数时,处理管道符号扔给它的前一个命令的输出结果(即前一个命令的标准输出作为该命令的标准输入)。
[root @ linuxforlihj test]# lsbeifen . txt hello . sh MK read . ln read . sh read . txt sub . sh[root @ linuxforlihj test]# ls | grep read . shread . sh[root @ linuxforlihj test]# ls | grep read . sh | rmrm:缺少操作数
试试& # 39;rm -帮助& # 39;了解更多信息。[root @ linuxforlihj test]#当删除的文件没有在rm后指定时,该参数将被报告为丢失。所以rm之类的命令不支持从标准输入中读取参数,只在命令行指定参数,也就是指定删除的文件。
标准输入和命令行参数哪个优先?有两个文件如下。
[root @ linuxforlihj测试]# cat a.txt aaaa
嗒嗒球拍
离心逆流色谱法
BBBB[root @ linuxforlihj test]# catb . txt 1113333444222[root @ linuxforlihj test]#执行命令:cat a.txt | sort
[root @ linuxforlihj test]# cat a . txt | sorta aa
双侧束支传导阻滞
离心逆流色谱法
dddd[root @ linuxforlihj test]#当sort的命令行参数为空时,默认使用前一条命令的输出结果作为这条命令的输入。
执行命令:cat a.txt | sort b.txt
[root @ linuxforlihj test]# cat a . txt | sortb.txt 11112222333444[root @ linuxforlihj test]#可以看出,当sort(这里是b . txt)的命令行参数不为空时,sort不会读取标准输入中的参数,而是会及时读取命令行参数。
执行命令:cat a.txt | sort b.txt-
[root @ linuxforlihj test]# cat a . txt | sort b . txt-1111222233344444 AAAA
双侧束支传导阻滞
离心逆流色谱法
dddd[root @ linuxforlihj test]# & quot;-& quot;表示标准输入,即命令cat a.txt的输出,相当于把文件b.txt和标准输入一起排序,相当于把a.txt b.txt排序
[root @ linuxforlihj test]# sort a . txt b . txt 1111222233334444 AAAA
双侧束支传导阻滞
离心逆流色谱法
dddd[root @ linuxforlihj test]#
评论前必须登录!
注册