| 字符 | 说明 | 示例 | | -------- | ------------------------------------------------------------ | -------- | | * | 匹配任意字符数。 您可以在字符串中使用星号 (*****)。 | | | ? | 在特定位置中匹配单个字母。 | | | [ ] | 匹配方括号中的字符。 | | | ! | 在方括号中排除字符 | | | - | 匹配一个范围内的字符。 记住以升序指定字符(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文件
创建如下测试数据
[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文件
记好、通配符用于解决什么问题?
搜索/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文件
比起通配符来说,linux的特殊符号更加杂乱无章,但是一个专业的linux运维
孰能生巧,这些都不是问题
| 符号 | 作用 | | ---- | ------------------------------------------ | | ~ | 当前登录用户的家目录 | | - | 上一次工作路径 | | . | 当前工作路径,或表示隐藏文件 .yuchao.linux | | .. | 上一级目录 |
'' 单引号、所见即所得
"" 双引号、可以解析变量及引用命令
`` 反引号、可以解析命令
无引号,一般我们都省略了双引号去写linux命令,但是会有歧义,比如空格,建议写引号
> stdout覆盖重定向
>> stdout追加重定向
< stdin重定向
2> stderr重定向
2>> stderr追加重定向
command1 && command2 # command1成功后执行command2
command1 || command2 # command1失败后执行command2
command1 ; command2 # 无论command1成功还是失败、后执行command2
\ # 转义特殊字符,还原字符原本含义
$() # 执行小括号里的命令
`` # 反引号,和$()作用一样
| # 管道符
{} # 生成序列
结论、单引号是所见即所得,单引号里面是什么,输入就是什么,没有任何改变,特殊符号也都失去了其他作用。
反引号中的linux命令是可以执行的,且反引号中只能写可执行的linux命令
系统会首先执行反引号里的命令,然后再进行下一步的处理。
linux命令
- 时间查看
- 启动nginx
- 显示工作路径
- 创建文件夹
变量解析
当输出双引号内的内容是,如果内容里有linux命令、或者变量、特殊转义符等
会优先解析变量、命令、转义字符,然后得到最终的内容
linux命令执行(引号嵌套)
变量解析(引号嵌套)
- PATH查看
- 自定义变量查看
没有引号、很难确定字符串的边界,很容易出现各种故障
例如date "+%F %T"这样的命令
如生活中的管道,能够传输物质
Linux管道符 | 用于传输数据,对linux命令的处理结果再次处理,直到得到最终结果
只有前面命令失败、才执行后面命令
执行linux命令
- 时间查看
- 创建文件以时间命名
- 搜索文件、删除文件
- 启动、关闭、nginx