管道命令pipe

bash命令执行的时候有输出的数据会出现。那么如果这些数据必须要经过几道处理之后才能得到我们所想要的格式,这就牵涉到管道命令的问题了(pipe),管道命令使用的是【|】这个界定符号。另外,管道命令与【连续执行命令】是不一样的,这点下面我们会在说明。
假设我们想要知道/etc/下面有多少文件,那么可以利用ls /etc来查看,不过,因为/etc下面的文件太多,导致一口气就将屏幕塞满了,不知道前面输出的内容是啥?此时,我们可以通过less命令的协助:

	ubuntu@ubuntu-virtual-machine:~$ ls -al /etc | less

如此一来,使用ls命令输出后的内容,就能够被less读取,并且利用less的功能,我们就能够前后翻动相关的信息了。
其实管道命令【|】仅能处理经由前面一个命令传来的正确信息,也就是标准输出的信息,对于标准错误并没有直接处理能力。那么整体的管道命令可以使用下图表示:
在这里插入图片描述
在每一个管道后面接的第一个数据必定是【命令】,而且这个命令必须是能够接受标准输入的数据才行,这样的命令可以是管道命令,例如less/more/head/tail等都可以接受标准输入的管道命令,至于例如ls/cp/mv等就不是管道命令,因为ls/cp/mv并不会接受来自stdin的数据,也就是说,管道命令主要有两个比较需要注意的地方:
·管道命令金辉处理标准输出,对于标准错误会予以忽略;
·管道命令必须要能够接受来自前一个命令的数据成为标准输入继续处理才行。
注:如果非要让标准错误可以被管道命令所使用,那该如何处理?其实就是通过数据流重定向,让2>&1加入命令中,就可以让2>变成1>.

发布了53 篇原创文章 · 获赞 16 · 访问量 2213

猜你喜欢

转载自blog.csdn.net/m0_37757533/article/details/102887516
今日推荐