如果我们想对一类文件批量操作,例如批量查看硬盘文件属性,那么正常命令是如下所示:
[root@localhost Desktop]# ls /dev/sda1
[root@localhost Desktop]# ls /dev/sda2
但是有的时候不知道分区的个数和分区号,这个时候就需要用通配符来解决了,Bash解释器支持的多种通配符包括:
? 匹配任意单个字符 [0-9] 匹配范围内的数字 [abc] 匹配给出的任意字符
实例1:查看sda开头的所有设备文件:
[root@localhost Desktop]# ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2
实例2:查看sda后面又一个字符的设备文件
[root@localhost Desktop]# ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2
实例3:查看sda后面包含0-9数字的设备文件
[root@localhost Desktop]# ls /dev/sda[0-9] /dev/sda1 /dev/sda2
实例4:查看sda后面包含1或3或5的设备文件
[root@localhost Desktop]# ls /dev/sda[135] /dev/sda1
另外,bash还有多种特殊字符的扩展
\(反斜杠) : 转译后面的单个字符
''(单引号) : 转译所有字符
""(双引号) : 变量依然生效
``(反引号) : 之行命令语句
实例:
定义名称为PRICE的变量值为5:
[root@localhost Desktop]# PRICE=5
想要输出“价格是5”:
[root@localhost Desktop]# echo "Price is $PRICE" Price is 5
想要输出“价格是$5”,但是因为美元符号与代表变量取值的$符号冲突了,所以报错
[root@localhost Desktop]# echo "Price is $$PRICE" Price is 5435PRICE [root@localhost Desktop]#
此时需要添加一个反斜杠,将$进行转译
[root@localhost Desktop]# echo "Price is \$$PRICE" Price is $5
使用单引号,变量将不再被取值
[root@localhost Desktop]# echo 'Price is \$$PRICE' Price is \$$PRICE
执行uname -a 会查看本机内核的版本和架构信息(反引号里面的命令会被执行)
[root@localhost Desktop]# echo "uname -a" uname -a [root@localhost Desktop]# echo 'uname -a' uname -a [root@localhost Desktop]# echo `uname -a` Linux localhost.localdomain 3.10.0-327.28.3.el7.x86_64 #1 SMP Thu Aug 18 19:05:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux