一、Linux通配符
通配符是bash的内置功能,用以轻松匹配,提高效率。
通配符集合:
符号 |
作用 |
* |
匹配任意字符或字符串(0个或多个),包括空字符串 |
? |
匹配任意1个字符(有且仅有1个)(很少用到)(占位符) |
匹配一堆字符或文本: | |
[abcd] |
匹配abcd中任何一个,和正则意思一样 |
[a-z] |
匹配a-z中任何一个,和正则意思一样 |
[!abcd] |
取反,匹配除了这几个的任意一个 |
举例如下
*
ls *.txt 查看所有以txt结尾的文件
cd 到目录内
rm -f ./* 删除当前目录下所有内容
[a-z]
[root@localhost olyboy]# touch a.txt b.txt c.txt ac.txt
[root@localhost olyboy]# ls [a-z].txt
a.txt b.txt c.txt
{}
[root@m01 ~]# echo {1..5}
1 2 3 4 5
[root@m01 ~]# echo {a..Z}
a ` _ ^ ] [ Z
[root@m01 ~]# echo {1..10..2} 2:步长
1 3 5 7 9
[root@m01 ~]# echo {1..10..3}
1 4 7 10
[root@m01 ~]# echo {a..z..b}
{a..z..b}
[root@m01 ~]# echo {a..z..2}
a c e g i k m o q s u w y
[root@m01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.abc}
1、路径位置相关
符号 |
含义 |
~ |
代表用户的家目录[root@localhost ~]# su - zls [zls@localhost ~]$ |
- |
上次路径 cd - 即切到上次所在路径 |
. |
当前目录 cd . 发现还在当前目录 |
.. |
上级目录 |
2、各种引号
符号 |
作用 |
单引号 |
所见即所得(强引用) |
双引号 |
弱应用,里面的命令、变量啥的用反引号引起来可以解析出结果 |
无引号 |
与双引号类似,但没引号难确定字符串边界,所有建议用双引号代替 |
反引号 |
用于引用命令,相当于$(),但反引号不支持嵌套 |
例子:
[root@localhost ~]# echo `date` 反引号,会解析命令
Thu Sep 29 20:17:55 CST 2022
[root@localhost ~]# echo '`date`' 单引号,用反引号引起来也没用,原样输出
`date`
[root@localhost ~]# echo "`date`" 双引号,弱引用
Thu Sep 29 20:32:24 CST 2022
[root@localhost ~]# echo "date"
date
[root@localhost ~]# echo "today is `date %F`"
today is 2022-09-29
[root@localhost ~]# echo "today is `date %F-%T`"
today is 2022-09-29-20:35:50
[root@localhost ~]# echo "today is `date %F %T`"
today is 2022-09-29 20:37:04
[root@localhost ~]# echo "today is $(date)"
today is Thu Sep 29 20:37:44 CST 2022
3、重定向相关(见前面相关章节)
4、其他特殊符号
名称 |
解释 |
; |
执行多条命令时可用作命令间分隔符 |
| |
管道符 |
# |
①注释内容,系统不会执行以“#”号开始的内容②root用户的命令提示符 |
$ |
①字符串前加$,代表变量②普通用户的命令提示符 |
\ |
将含有特殊含义的字符(通配符或正则表达)还原成其本意 |
{} |
①生成序列②shell里用的,引用变量 |
例子
$
[root@web01 ~]# sky=1
[root@web01 ~]# echo $ sky
$ sky
[root@web01 ~]# echo $sky
1
{}
# 生成序列
[root@m01 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@m01 ~]# echo {a..Z}
a ` _ ^ ] [ Z
[root@m01 ~]# echo {1..10..2} 2:步长
1 3 5 7 9
[root@m01 ~]# echo {1..10..3}
1 4 7 10
[root@m01 ~]# echo {a..z..b}
{a..z..b}
[root@m01 ~]# echo {a..z..2}
a c e g i k m o q s u w y
[root@m01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.abc}
相当于 cp {/etc/sysconfig/network-scripts/ifcfg-eth0,/etc/sysconfig/network-scripts/ifcfg-eth0.abc}
,