什么是通配符

通配符语法

| 字符 | 说明 | 示例 | | -------- | ------------------------------------------------------------ | -------- | | * | 匹配任意字符数。 您可以在字符串中使用星号 (*****)。 | | | ? | 在特定位置中匹配单个字母。 | | | [ ] | 匹配方括号中的字符。 | | | ! | 在方括号中排除字符 | | | - | 匹配一个范围内的字符。 记住以升序指定字符(A 到 Z,而不是 Z 到 A)。 | | | | | | | ^ | 同感叹号、在方括号中排除字符 | | | | | |

测试数据

[yuchao-linux-242 root /tmp]#mkdir /test ;cd /test
[yuchao-linux-242 root /test]#
[yuchao-linux-242 root /test]#touch yuchao.txt yuc.txt cc.txt yuchao01.log yuyu.log cc.sh

* 匹配任意字符

找出所有txt结尾的文件


查看以sh结尾的文件


查看以yu开头、txt结尾的文件

查看以yu开头、log结尾的文件

查看所有以yu开头的文件

找出以c开头的文件

? 匹配任意一个字符(用得少)

可以执行吗?
[yuchao-linux-242 root /test]#ls ?.sh

如何查找特定字符数量的文件?

找出所有sh脚本文件,必须用?符号


找出所有txt,,必须用?符号




[] 匹配方括号里的内容

创建测试数据,如
[yuchao-linux-242 root /test]#touch {a..g}.log
[yuchao-linux-242 root /test]#ls
a.log  b.log  cc.sh  cc.txt  c.log  c.sh  d.log  e.log  f.log  g.log  yuchao01.log  yuchao.txt  yuc.txt  yuyu.log



找出文件名是a-z之间任意一个字符的txt


找出a-z之间任意一个字符的log


找出a-c之间任意一个字符的log


创建测试数据
[yuchao-linux-242 root /test]#touch yu{1..5}.log
[yuchao-linux-242 root /test]#touch yc{1..5}.log
[yuchao-linux-242 root /test]#touch y{1..5}.log

找出以yu1  yu2 yu3 相关的log文件



找出以y开头相关的log


只找出文件名是三个字符的log文件


找出系统中所有文件名是两个字符的txt文件

[!abcd] 取反方括号的内容

创建如下测试数据
[yuchao-linux-242 root /test]#ls
a.log  cc.sh   c.log  d.log  f.log  yc1.log  yc3.log  yc5.log  yu2.log  yu4.log  yuchao01.log  yuc.txt
b.log  cc.txt  c.sh   e.log  g.log  yc2.log  yc4.log  yu1.log  yu3.log  yu5.log  yuchao.txt    yuyu.log


找出除了以abcd开头的log文件,两种写法



找出除了abcd开头的单个字母的log文件



排除所有名字里包含y和u字符的文件



排除所有名字里包含y和u的sh文件

find找文件与通配符

记好、通配符用于解决什么问题?

搜索/etc下所有包含hosts相关字符的文件



搜索/etc下的以ifcfg开头的文件(网卡配置文件)



只查找以数字结尾的网卡配置文件


找到系统中的第一块到第四块磁盘,注意磁盘的语法命名


找找sdb硬盘有几个分区,请考虑到* ? [] 通配符





练习二

测试数据源准备
[yuchao-linux01 root ~/test_shell]$touch {a..h}.log
[yuchao-linux01 root ~/test_shell]$touch {1..10}.txt
[yuchao-linux01 root ~/test_shell]$ls
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  a.log  b.log  c.log  d.log  e.log  f.log  g.log  h.log
[yuchao-linux01 root ~/test_shell]$



找出a到e的log文件



找出除了3到5的txt文件


找出除了2,5,8,9的txt文件


找出除了a,e,f的log文件


3.特殊符号

什么是特殊符号

比起通配符来说,linux的特殊符号更加杂乱无章,但是一个专业的linux运维
孰能生巧,这些都不是问题

路径相关

| 符号 | 作用 | | ---- | ------------------------------------------ | | ~ | 当前登录用户的家目录 | | - | 上一次工作路径 | | . | 当前工作路径,或表示隐藏文件 .yuchao.linux | | .. | 上一级目录 |

引号相关

'' 单引号、所见即所得
"" 双引号、可以解析变量及引用命令
`` 反引号、可以解析命令
	 无引号,一般我们都省略了双引号去写linux命令,但是会有歧义,比如空格,建议写引号

重定向符号

>  		stdout覆盖重定向
>> 		stdout追加重定向

<			stdin重定向

2>   stderr重定向
2>>  stderr追加重定向

命令执行

command1 && command2 	 #  command1成功后执行command2
command1 || command2 	 #  command1失败后执行command2
command1 ; command2		 #  无论command1成功还是失败、后执行command2


\				# 转义特殊字符,还原字符原本含义
$()			# 执行小括号里的命令
``     # 反引号,和$()作用一样
|			 # 管道符
{}		 # 生成序列

4.引号练习

单引号

结论、单引号是所见即所得,单引号里面是什么,输入就是什么,没有任何改变,特殊符号也都失去了其他作用。

反引号

反引号中的linux命令是可以执行的,且反引号中只能写可执行的linux命令

系统会首先执行反引号里的命令,然后再进行下一步的处理。

linux命令
- 时间查看
- 启动nginx
- 显示工作路径
- 创建文件夹



变量解析


双引号

当输出双引号内的内容是,如果内容里有linux命令、或者变量、特殊转义符等

会优先解析变量、命令、转义字符,然后得到最终的内容

linux命令执行(引号嵌套)


变量解析(引号嵌套)
- PATH查看
- 自定义变量查看

无引号

没有引号、很难确定字符串的边界,很容易出现各种故障

例如date "+%F %T"这样的命令

5.特殊符号练习

重定向符号

; 分号

# 符号

| 管道符

如生活中的管道,能够传输物质

Linux管道符 | 用于传输数据,对linux命令的处理结果再次处理,直到得到最终结果

&& 符

|| 符

只有前面命令失败、才执行后面命令

$() 符

执行linux命令
- 时间查看
- 创建文件以时间命名
- 搜索文件、删除文件
- 启动、关闭、nginx

{} 序列符