1. 背景
bash 命令执行的时候有输出的数据会出现! 那么如果这群数据必需要经过几
道手续之后才能得到我们所想要的格式,应该如何来设定? 这就牵涉到管线命令的问题了 (pipe) ,
管线命令使用的是『 | 』这个界定符号! 另外,管线命令与『连续下达命令』是不一样的呦! 这
点底下我们会再说明。底下我们先举一个例子来说明一下简单的管线命令。
2. 示例
假设我们想要知道 /etc/ 底下有多少文件,那么可以利用 ls /etc 来查阅,不过, 因为 /etc 底下的文
件太多,导致一口气就将屏幕塞满了~不知道前面输出的内容是啥?此时,我们可以透过 less 指令
的协助,利用:
ls -al /etc | less
如此一来,使用 ls 指令输出后的内容,就能够被 less 读取,并且利用 less 的功能,我们就能够前
后翻动相关的信息了!很方便是吧?我们就来了解一下这个管线命令『 | 』的用途吧! 其实这个管
线命令『 | 』仅能处理经由前面一个指令传来的正确信息,也就是 standard output 的信息,对于
stdandard error 并没有直接处理的能力。那么整体的管线命令可以使用下图表示:
3. 使用总结
在每个管线后面接的第一个数据必定是『指令』喔!而且这个指令必须要能够接受 standard input 的
数据才行,这样的指令才可以是为『管线命令』,例如 less, more, head, tail 等都是可以接受 standard
input 的管线命令啦。至于例如 ls, cp, mv 等就不是管线命令了!因为 ls, cp, mv 并不会接受来自
stdin 的数据。 也就是说,管线命令主要有两个比较需要注意的地方:
- 管线命令仅会处理 standard output,对于 standard error output 会予以忽略
- 管线命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理才行。