linux下的命令行通配符总结

我们想对一类文件批量操作,例如批量查看硬盘文件属性,那么正常命令会是:
[root@linuxprobe ~]# ls /dev/sda
[root@linuxprobe ~]# ls /dev/sda1
[root@linuxprobe ~]# ls /dev/sda2
[root@linuxprobe ~]# ls /dev/sda3

但有些时候确实不知道分区的个数或分区号,这时候就要用到通配符来搞定了,Bash解释器的支持多种文本


通配符包括:
通配符         含义
*          匹配零个或多个字符。
?          匹配任意单个字符。
[0-9]      匹配范围内的数字。
[abc]      匹配已出的任意字符。

查看sda开头的所有设备文件:
[root@linuxprobe ~]# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2

查看sda后面有一个字符的设备文件:
[root@linuxprobe ~]# ls /dev/sda?
/dev/sda1 /dev/sda2

查看sda后面包含0-9数字的设备文件:
[root@linuxprobe ~]# ls /dev/sda[0-9]
/dev/sda1 /dev/sda2

查看sda后面是135的设备文件:
[root@linuxprobe ~]# ls /dev/sda[135]
/dev/sda1


另外bash解释器还支持很多的特殊字符扩展:
字符              作用
\(反斜杠)     转义后面单个字符
''(单引号)    转义所有的字符
""(双引号)    变量依然生效
``(反引号)    执行命令语句

定义名称为PRICE的变量值为5:
[root@linuxprobe ~]# PRICE=5
想要输出”价格是5″:
[root@linuxprobe ~]# echo "Price is $PRICE"
Price is 5
想要输出”价格是$5″,但因为美元符号与代表变量取值的$符号冲突了,所以报错了:
[root@linuxprobe ~]# echo "Price is $$PRICE"
Price is 3767PRICE
添加一个反斜杠,将第一个$符号转义:
[root@linuxprobe ~]# echo "Price is \$$PRICE"
Price is $5
使用单引号,变量将不再被取值:
[root@linuxprobe ~]# echo 'Price is \$$PRICE'
Price is \$$PRICE
执行uname -a后可以查看到本机内核的版本与架构信息(反引号里面的命令会被执行):
[root@linuxprobe ~]# echo `uname -a`
Linux linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

你可能感兴趣的:(Linux)