Linux中的通配符与特殊符号详解

图片[1]-Linux中的通配符与特殊符号详解-不念博客

一、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}
© 版权声明
THE END