首页 > 代码库 > 第十一章、认识与学习 BASH 管线命令 (pipe)

第十一章、认识与学习 BASH 管线命令 (pipe)

管线命令使用『 | 』界定符号

[root@www ~]# ls -al /etc | less

管线命令『 | 』仅能处理经由前面一个命令传来的正确信息,也就是 standard output 的信息,对于 stdandard error 并没有直接处理的能力。

管线命令的处理示意图
图 6.1.1、 管线命令的处理示意图
  • 管线命令仅会处理 standard output,对于 standard error output 会予以忽略
  • 管线命令必须要能够接受来自前一个命令的输出数据成为 standard input 继续处理才行。

撷取命令: cut, grep

撷取信息通常是针对『一行一行』来分析的, 并不是整篇信息分析


  • cut
[root@www ~]# cut -d分隔字符 -f fields <==用于有特定分隔字符[root@www ~]# cut -c 字符区间            <==用于排列整齐的信息选项与参数:-d  :后面接分隔字符。与 -f 一起使用;-f  :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;-c  :以字符 (characters) 的单位取出固定字符区间;范例一:将 PATH 变量取出,我要找出第五个路径。[root@www ~]# echo $PATH/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games:# 1 |    2   |  3  |    4    |       5      |     6        |    7[root@www ~]# echo $PATH | cut -d : -f 5# 如同上面的数字显示,我们是以『 : 』作为分隔,因此会出现 /usr/local/bin # 那么如果想要列出第 3 与第 5 呢?,就是这样:[root@www ~]# echo $PATH | cut -d : -f 3,5范例二:将 export 输出的信息,取得第 12 字符以后的所有字符串[root@www ~]# exportdeclare -x HISTSIZE="1000"declare -x INPUTRC="/etc/inputrc"declare -x KDEDIR="/usr"declare -x LANG="zh_TW.big5".....(其他省略).....# 注意看,每个数据都是排列整齐的输出!如果我们不想要『 declare -x 』时,# 就得这么做:[root@www ~]# export | cut -c 12-HISTSIZE="1000"INPUTRC="/etc/inputrc"KDEDIR="/usr"LANG="zh_TW.big5".....(其他省略).....# 知道怎么回事了吧?用 -c 可以处理格式化数据!# 我们还可以指定某个范围的值,例如第 12-20 的字符,就是 cut -c 12-20 等等!范例三:用 last 将显示的登陆者的信息中,仅留下用户大名[root@www ~]# lastroot   pts/1    192.168.201.101  Sat Feb  7 12:35   still logged inroot   pts/1    192.168.201.101  Fri Feb  6 12:13 - 18:46  (06:33)root   pts/1    192.168.201.254  Thu Feb  5 22:37 - 23:53  (01:16)# last 可以输出『账号/终端机/来源/日期时间』的数据,并且是排列整齐的[root@www ~]# last | cut -d   -f 1# 由输出的结果我们可以发现第一个空白分隔的字段代表账号,所以使用如上命令:# 但是因为 root   pts/1 之间空格有好几个,并非仅有一个,所以,如果要找出 # pts/1 其实不能以 cut -d   -f 1,2 !输出的结果会不是我们想要的。

cut 主要的用途在于将『同一行里面的数据进行分解!』最常使用在分析一些数据或文字数据的时候! 这是因为有时候我们会以某些字符当作分割的参数,然后来将数据加以切割,以取得我们所需要的数据。

 

第十一章、认识与学习 BASH 管线命令 (pipe)