发布于:,更新于:

Linux管道命令

  1. 管道命令:|

管道命令的作用:前一个命令的输出是后一个命令的输入

例如:统计目前有几个用户登录

1
2
3
4
[root@master ~]# who
root     pts/0        2023-12-18 08:08 (192.168.152.130)
[root@master ~]# who | wc -l
1

查看/etc下面的文件和文件夹及其子文件夹、子文件的详细信息,并以可翻页的形式显示:

1
[root@master ~]# ls -Rl /etc | less

增加一个用户aaa,并查看/etc/passwd的内容,该文件存放了所有的系统用户、root用户、自定义用户。增加一个用户aaa,就可以看到该文件最后增加的相应的一行内容。用管道命令统计该文件的行数、字数、字符数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@master ~]# adduser aaa
[root@master ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

…………

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
aaa:x:1000:1000::/home/aaa:/bin/bash
[root@master ~]# cat /etc/passwd | wc
     30      59    1491
# (行数) (字数) (字符数)

查看是否存在用户aaa

1
2
[root@master ~]# cat /etc/passwd | grep aaa
aaa:x:1000:1000::/home/aaa:/bin/bash

命令rpm -qa可以查看目前安装了哪些应用程序。现在要用管道命令,检查是否安装了mysql数据库:

1
2
3
4
5
6
[root@master ~]# rpm -qa | grep mysql
mysql-community-server-5.7.18-1.el7.x86_64
mysql-community-common-5.7.18-1.el7.x86_64
mysql-community-libs-5.7.18-1.el7.x86_64
mysql-community-client-5.7.18-1.el7.x86_64
mysql-community-devel-5.7.18-1.el7.x86_64

查看mysql数据库中有多少个组件:

1
2
[root@master ~]# rpm -qa | grep mysql | wc -l
5

通过这个命令,说明了管道命令是可以级联的,从而实现更加复杂的功能。

  1. vi编辑器操作

(1)vi编辑器的启动和退出

用命令:vi+文件名:进入vi编辑器

按i键进入编辑模式,可以输入内容

按:wq保存退出,按:q!不保存退出

(2)vi编辑器的工作模式

编辑模式:进入vi编辑器以后的默认模式

插入模式:在编辑模式下,按i键,进入插入模式

命令模式:在编辑模式下,按:键,进入命令模式

(3)vi编辑器常用命令

:q!  不保存退出

:wq  保存退出

:?单词   查找文件中的某一个单词位置,查找定位后,按n键可以连续定位下一个单词。

😒/单词1/单词2/g   把文件中所有的单词1,替换成单词2

:d   删除当前行,或者在编辑模式状态下,在某一行上按dd,直接删除这一行

课堂练习:

  1. 在/opt下建立文件夹/opt/aaa
1
mkdir /opt/aaa
  1. 用vi编辑器建立文件/opt/aaa/a01.txt,并输入下面的内容
1
2
3
4
5
6
7
8
vi /opt/aaa/a01.txt
hello hadoop
hello spark
hello spark
hello hdfs
hello hdfs
hello hdfs
hello spark spark

image.png

  1. 保存并退出

  2. 用管道命令统计/opt/aaa/a01.txt,一共有几行

1
cat /opt/aaa/a01.txt | wc -l
  1. 用管道命令找到所有的含有hdfs单词的内容
1
grep "hdfs" /opt/aaa/a01.txt
  1. 用管道命令统计含有spark单词的行,一共有几行
1
grep "spark" /opt/aaa/a01.txt | wc -l
  1. 用管道命令统计spark单词有几个
1
grep -o "spark" /opt/aaa/a01.txt | wc -l
  1. 查看系统中是否安装了hbase软件包
1
rpm -qa | grep hbase
  1. 新建用户bbb,并查找/etc/passwd中是否存在该用户
1
2
useradd bbb
grep bbb /etc/passwd
  1. 在vi编辑器中,用?命令,查找hello单词

  2. 在vi编辑器中,用:s/单词1/单词2/g命令,将所有的hello,替换成hi

1
2
3
4
5
6
7
# 进入vi 使用如下命令
vi /opt/aaa/a01.txt
:%s/hello/hi/g
:wq

# 方法二
sed -i s/hello/hi/g /opt/aaa/a01.txt
  1. 用管道命令,统计包含hi的内容一共有多少行,并利用重定向命令将结果写入/opt/aaa/a02.txt
1
grep hi /opt/aaa/a01.txt | wc -l >> /opt/aaa/a02.txt