linux中什么是通配符(Linux中的通配符与特殊符号)(1)

一、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}

二、Linux特殊符号

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}


,