Linux命令之通配符&管道符

举报
海风极客 发表于 2022/10/16 17:57:13 2022/10/16
【摘要】 相信你在使用Linux的过程中,一定会用到过诸如“?”、“*”、“%”、“|”等等的符号(一般都是在网上直接复制)这些符号在Linux的命令中是一种具有特殊功能的符号,被称为通配符或管道符。 1 简介 1.1 通配符通配符是一种特殊语句,用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。常用的...

相信你在使用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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。