千家信息网

如何使用linux shell 管道命令及管道命令与shell重定向区别

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"如何使用linux shell 管道命令及与shell重定向区别",在日常操作中,相信很多人在如何使用linux shell 管道命令及与shell重定向区别问题上存在疑惑,小编查阅
千家信息网最后更新 2026年11月03日如何使用linux shell 管道命令及管道命令与shell重定向区别

这篇文章主要介绍"如何使用linux shell 管道命令及与shell重定向区别",在日常操作中,相信很多人在如何使用linux shell 管道命令及与shell重定向区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用linux shell 管道命令及与shell重定向区别"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

管道命令操作符是:"|",它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard
error 信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入 standard input.

管道命令使用说明:
先看下下面图:

command1正确输出,作为command2的输入 然后comand2的输出作为,comand3的输入 ,comand3输出就会直接显示在屏幕上面了。

通过管道之后:comand1,comand2的正确输出不显示在屏幕上面

注意:

1、管道命令只处理前一个命令正确输出,不处理错误输出

2、管道命令右边命令,必须能够接收标准输入流命令才行。

实例:

[chengmo@centos5 shell]$ cat test.sh | grep -n 'echo'5:    echo "very good!";7:    echo "good!";9:    echo "pass!";11:    echo "no pass!";#读出test.sh文件内容,通过管道转发给grep 作为输入内容 [chengmo@centos5 shell]$ cat test.sh test1.sh | grep -n 'echo'cat: test1.sh: 没有那个文件或目录5:    echo "very good!";7:    echo "good!";9:    echo "pass!";11:    echo "no pass!";#cat test1.sh不存在,错误输出打印到屏幕,正确输出通过管道发送给grep   [chengmo@centos5 shell]$ cat test.sh test1.sh 2>/dev/null | grep -n 'echo' 5:    echo "very good!";7:    echo "good!";9:    echo "pass!";11:    echo "no pass!";#将test1.sh 没有找到错误输出重定向输出给/dev/null 文件,正确输出通过管道发送给grep  [chengmo@centos5 shell]$ cat test.sh | lscatfile      httprequest.txt  secure  test            testfdread.sh  testpipe.sh    testsh.sh      testwhile2.shenvcron.txt  python           sh      testcase.sh     testfor2.sh    testselect.sh  test.txt       text.txtenv.txt      release          sms     testcronenv.sh  testfor.sh     test.sh        testwhile1.sh#读取test.sh内容,通过管道发送给ls命令,由于ls 不支持标准输入,因此数据被丢弃

这里实例就是对上面2点注意的验证。作用接收标准输入的命令才可以用作管道右边。否则传递过程中数据会抛弃。 常用来作为接收数据管道命令有:sed,awk,cut,head,top,less,more,wc,join,sort,split 等等,都是些文本处理命令。

管道命令与重定向区别

区别是:

1、左边的命令应该有标准输出 | 右边的命令应该接受标准输入
左边的命令应该有标准输出 > 右边只能是文件
左边的命令应该需要标准输入 < 右边只能是文件

2、管道触发两个子进程执行"|"两边的程序;而重定向是在一个进程内执行

这些都是网上总结很多的,其实只要多加清楚用法,也一定有自己的一份不同描述。

实例:

#可以相互转换情况#输入重定向 [chengmo@centos5 shell]$ cat test.sh| grep -n 'echo'5:    echo "very good!";7:    echo "good!";9:    echo "pass!";11:    echo "no pass!";#"|"管道两边都必须是shell命令  [chengmo@centos5 shell]$ grep -n 'echo' test.txt[chengmo@centos5 shell] cat test.sh|tee test.txt &>/dev/null#通过管道实现将结果存入文件,还需要借助命令tee,它会把管道过来标准输入写入文件test.txt ,然后将标准输入复制到标准输出(stdout),所以重定向到/dev/null 不显示输出#">"输出重定向,往往在命令最右边,接收左边命令的,输出结果,重定向到指定文件。也可以用到命令中间。  [chengmo@centos5 shell]$ ls test.sh test1.sh testsh.sh 2>err.txt | grep 'test'test.shtestsh.sh#目录下面有:test,testsh文件,test1.sh不存在,因此将ls 命令错误输出输入到err.txt 正确输出,还会通过管道发送到grep命令。[chengmo@centos5 shell]$ ls test.sh test1.sh testsh.sh &>err.txt | grep 'test'#这次打印结果是空,&代表正确与错误输出 都输入给err.txt,通过管道继续往下面传递数据为空,所以没有什么显示的 #同样">"输出重定向符,优先级也是先解析,当一个命令有这个字符,它就会与左边命令标准输出绑定。准备好了这些,就等待命令执行输出数据,它就开始接收

再概括下:

从上面例子可以看,重定向与管道在使用时候很多时候可以通用,其实,在shell里面,经常是【条条大路通罗马】的。一般如果是命令间传递参数,还是管道的好,如果处理输出结果需要重定向到文件,还是用重定向输出比较好。

命令执行顺序可以看下:Linux Shell 通配符、元字符、转义符使用实例介绍

shell脚本接收管道输入
有意思的问题:

既然作用管道接收命令,需要可以接收标准的输入,那么我们shell脚本是否可以开发出这样的基本程序呢?(大家经常看到的,都是一些系统的命令作为管道接收方)

实例(testpipe.sh):

#!/bin/sh   if [ $# -gt 0 ];then     exec 0<$1;#判断是否传入参数:文件名,如果传入,将该文件绑定到标准输入 fi   while read line do     echo $line; done<&0;#通过标准输入循环读取内容 exec 0&-;#解除标准输入绑定

运行结果:

[chengmo@centos5 shell]$ cat testpipe.txt1,t,est pipe2,t,est pipe3,t,est pipe4,t,est pipe#testpipe.txt 只是需要读取的测试文本 [chengmo@centos5 shell]$ cat testpipe.txt | sh testpipe.sh1,t,est pipe2,t,est pipe3,t,est pipe4,t,est pipe#通过cat 读取 testpipe.txt 发送给testpipe.sh 标准输入 [chengmo@centos5 shell]$ sh testpipe.sh testpipe.txt      1,t,est pipe2,t,est pipe3,t,est pipe4,t,est pipe#testpipe.sh 通过出入文件名读取文件内容

到此,关于"如何使用linux shell 管道命令及与shell重定向区别"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

命令 管道 输出 输入 文件 标准 内容 右边 处理 实例 数据 结果 错误 学习 信息 屏幕 脚本 有意思 也就是 优先级 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 山东特亿宝互联网科技有限公司 上海喔噻互联网科技 苏州互联网科技贷款公司 上海致骋互联网科技 四川狮子座互联网科技 盛创互联网科技有限公司 互联网 科技馆 安控科技rtu产品工业互联网 北京三清互联网科技 深圳前海聚择互联网科技有限公司 互联网科技博主是什么意思 赶超互联网科技 微信多开 互联网科技产业特征 米聚互联网科技南京有限公司排面 浙南科技城互联网大厦建设工程 黑科技 体验场景 互联网大会 互联网科技手机排行榜 互联网金融运营模式中的金融科技 唐山双旺合互联网科技产业园 花魁咖啡 朗新科技与工业互联网 互联网与科技发展 合肥互联网科技公司 致骋互联网科技 云电互联网科技 乌苏新华互联网科技做什么的 济南有互联网科技公司吗 北京品多多互联网科技有限公司 科技美学互联网 艺术
0