通配符
通配符简介
虽然有些像,但是linux通配符与正则表达式并不是一回事。
通配符由shell进行处理,shell会将其作为路径或文件名在文件系统中进行匹配,若符合要求的匹配存在则进行路径扩展,否则该通配符将作为一个普通字符
传递给命令。总之,shell会对带通配符的命令及参数进行命令重组,再处理重组后的命令。
通配符有哪些
通配符 | 含义 |
---|---|
* | 0或任意个字符 |
? | 任意一个字符 |
[abc] | abc中任一个字符 |
[a-z] | 按编码顺序a到z间的所有字符 |
[!ab]或[^a-b] | 表示反向选择,即有一个字符,但不能是ab |
{string1,string2} | 表示匹配string1或string2中其一字符串 |
一些实例
*字符匹配任意个任意字符
?只能匹配单个任意字符
[]内字符代表其中任意一个,而{}内字符串也是匹配其中任意一个字符串
[]内用-符号链接两个字符,代表按编码顺序两个字符间的任意一个字符
元字符
元字符作用
另一种被shell解释的字符是元字符,元字符多作用于命令。
元字符有哪些
元字符 | 含义 |
---|---|
IFS | 内部字段分隔符,由<tab>或<space>或<enter>组成 |
= | 变量赋值 |
$ | 引用变量 |
> | 输出重定向 |
>> | 输出重定向(附加) |
< | 输入重定向 |
<< | 内联输入重定向 |
| | 管道命令 |
& | 文件描述符或背景运行 |
`` | 取命令的执行结果 |
$() | 取命令的执行结果,但是可以嵌套使用 |
{} | 变量替换的范围界定或将其内的命令置于non-named function执行 |
; | 分割多个命令,前一个命令执行后忽略其返回值,执行下一个命令 |
&& | 前一个命令结束时若返回值为true,则执行后一个命令 |
|| | 前一个命令结束时若返回时为false,则执行后一个命令 |
! | 取反,或历史命令调用 |
一些实例
重设IFS为冒号并打印/etc/passwd文件的第一行,因为该文件用冒号分隔
另有特色符号
符号 | 含义 |
---|---|
" " | (双引号)软引用,引号内特殊字符有特殊意义,但是不解析通配符 |
` ` | (单引号)硬引用,引号内所有字符都无特殊意义 |
不加引号 | 支持通配符 |
一些实例
双引号不解析通配符