相信你在使用Linux的过程中,一定会用到过诸如“?”、“*”、“%”、“|”等等的符号(一般都是在网上直接复制)

这些符号在Linux的命令中是一种具有特殊功能的符号,被称为通配符或管道符。

1 简介

1.1 通配符

通配符是一种特殊语句,用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。


常用的通配符:


* :表示匹配一个或多个字符
? :表示匹配一个字符(不能是0个字符)
[] :类似于正则表达式(只能是匹配一个字符)

1.2 管道符

管道命令符的作用是把前一个命令原本要输出到屏幕的标注正常数据当做是后一个命令的标准输入。一条命令中可以有多个管道符,只要前面的命令有输出结果,管道符后面的命令即可再执行。


常用的管道符:


| :是把前一个命令原本要输出到屏幕的标注正常数据当做是后一个命令的标准输入

2 通配符

为了实验方便,我们先新建几个文件

[root@iZ1608aqb7ntn9Z Test0901]# touch file01 file02 file03 
[root@iZ1608aqb7ntn9Z Test0901]# ls
file01 file02 file03

2.1 * 的使用

[root@iZ1608aqb7ntn9Z Test0901]# ls file*    #查看以file开头的文件
file01 file02 file03
[root@iZ1608aqb7ntn9Z Test0901]# ls
file01 file02 file03
[root@iZ1608aqb7ntn9Z Test0901]# rm -rf * #删除当前目录下全部文件
[root@iZ1608aqb7ntn9Z Test0901]# ls
[root@iZ1608aqb7ntn9Z Test0901]#

2.2 ?的使用

[root@iZ1608aqb7ntn9Z Test0901]# touch file01 file02 file03 
[root@iZ1608aqb7ntn9Z Test0901]# ls
file01 file02 file03
[root@iZ1608aqb7ntn9Z Test0901]# ls file?1
file01
[root@iZ1608aqb7ntn9Z Test0901]# rm -rf file?2
[root@iZ1608aqb7ntn9Z Test0901]# ls
file01 file03
[root@iZ1608aqb7ntn9Z Test0901]# rm -rf file0?
[root@iZ1608aqb7ntn9Z Test0901]# ls
[root@iZ1608aqb7ntn9Z Test0901]#

2.3 [] 的使用

[root@iZ1608aqb7ntn9Z Test0901]# ls
file01 file02 file03
[root@iZ1608aqb7ntn9Z Test0901]# ls file0[1]
file01
[root@iZ1608aqb7ntn9Z Test0901]# ls file0[12]
file01 file02
[root@iZ1608aqb7ntn9Z Test0901]# ls file0[1-2]
file01 file02
[root@iZ1608aqb7ntn9Z Test0901]# ls file0[0-1]
file01

3 管道符

3.1 基本语法

bash命令 | 管道命令

3.2 何为bash命令和管道命令?

首先解释下​​bash命令,就是Linux中的一切具有能够输入的命令​​,例如ps输出进程信息,ls输出文件列表等等

​管道命令,就是能够接收标准输出,​​例如grep,less,head,tail等命令

3.3 管道符基本使用

3.3.1 grep

截取出ps -ef命令里带有docker字符的所有命令

[root@iZ1608aqb7ntn9Z Test0901]# ps -ef|grep docker
root 369560 1 0 8月03 ? 00:05:24 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 777276 710637 0 14:37 pts/0 00:00:00 grep --color=auto docker

截取带有java进程的命令也是如此:

[root@iZ1608aqb7ntn9Z Test0901]# ps -ef|grep java
root 46858 1 0 5月02 ? 02:03:47 /usr/local/jdk1.8.0_141/bin/java -Djava.util.logging.config.file=/opt/20210406/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -D......
root 779698 710637 0 14:38 pts/0 00:00:00 grep --color=auto java
root 3369864 1 0 8月24 ? 00:07:09 java -jar stumg-0.0.1-SNAPSHOT.jar

使用ls命令也可以哦:

[root@iZ1608aqb7ntn9Z Test0901]# ls
file01 file02 file03
[root@iZ1608aqb7ntn9Z Test0901]# ls |grep 02
file02
3.3.2 wc

查看前一条命令输入的个数:

[root@iZ1608aqb7ntn9Z Test0901]# ls -a  | wc -l
5
[root@iZ1608aqb7ntn9Z Test0901]# ls | wc -l
3