8、管道命令
“ | ”,竖线符号代表的就是管道符
管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,所以又称为半双工管道。
介绍:
- 管道可以根据一组命令按照数据流向的方式来进行操作。简单的说,第一个命令执行后,不回显结果,而是把结果通过管道传递给第二个命令,第二个命令处理后再传给第三个….直到没有管道符后才终止命令,并回显最终结果。
- 管道可以把不同的命令组合成强大的指令集合。比如,对文件夹下所有的txt结尾的文件重命名,就需要三个管道符号,四个命令完成。
缺点:
- 数据只能从一个进程流向另一个进程(其中一个读管道,一个写管道)。如果要进行双工通信,需要建立两个管道。
- 管道只能用于父子进程或兄弟进程间通信,也就是说管道只能用于具有亲缘关系的进程间通信。
- 管道所传输的是无格式的字节流。
通过管道通信的两个进程,一个进程向管道写数据,另一个从中读数据。写入的数据每次都添加到管道缓冲区的末尾,读数据的时候都是冲缓冲区的头部读出数据的。
利用管道查看/root/install.log文件的内容并分页显示
[root@admin ~]# cat install.log | more
9、wc统计文件行数、字数、字节数并显示
语法:wc [-lwc] filename
选项与参数:
- -l : 统计文本文件内容的行数
- -w : 统计文本文件内容的字数。(一个字由空白、跳格或换行符分隔的字符串)
- -c : 统计文本文件内容总的字节数
- -m :统计文件的字符数。如果当前系统不支持多字节字符时,其将显示与-c参数相同结果。
现有一个a.txt文件,其内容如下:
[root@admin t2]# cat a.txt
adfasd
234123
adsftgrt
#通过管道命令使用wc命令统计/home/t2/a.txt文件行数、字数等
[root@admin /]# cat /home/t2/a.txt | wc
3 3 23
代表该文件内容有3个字符串3行23个字母
#直接使用wc查看该文件
[root@admin /]# wc /home/t2/a.txt
3 3 23 /home/t2/a.txt
比使用管道命令多显示了一个文件路劲及文件名
#修改一下文件a.txt
[root@admin t2]# cat a.txt
adfasd this is last one
234123
adsftgrt
#统计文件的行数
[root@admin t2]# wc -l a.txt
3 a.txt
统计行数时,实际统计的是换行符\n,所以存在空行也会算着一行
#统计文件a.txt的单词数,单词之间以空白字符为界定
[root@admin t2]# wc -w a.txt
7 a.txt
#统计文件a.txt文件的字节数
[root@admin t2]# wc -c a.txt
42 a.txt