Shell通配符
Shell常用通配符
| 字符 | 含义 | 实例 |
|---|---|---|
| * | 匹配0或多个字符 | a*b,表示a与b之间可以有任意长度的任意字符,也可以一个都没有,如aabcb、axyzb、a012b、ab |
| ? | 匹配任意一个字符 | a?b,表示a与b之间必须也只能有一个字符,可以是任意字符,如aab、abb、acb、a0b |
| [list] | 匹配list中的任意单一字符 | a[xyz]b,表示a与b之间必须也只能有一个字符,但只能是x或y或z,如:axb、ayb、azb |
| [!list] | 匹配除list中的任意单一字符 | a[!0-9],表示a与b之间必须也只能有一个字符,但不能是阿拉伯数字,如axb、aab、a-b |
| [c1-c2] | 匹配c1-c2中的任意单一字符,如:[0-9][a-z] | a[0-9]b,表示0与9之间必须也只能有一个字符如a0b、a1b、a9b |
| {string1,string2} | 匹配string1或string2(或更多)其一字符串 | a{abc,xyz,123}b,表示a与b之间只能是abc或xzy或123 |
Shell元字符
| 字符 | 说明 |
|---|---|
| ^ | 只匹配行首 |
| $ | 只匹配行尾 |
| * | 只一个单字符后紧跟*,匹配0个或多个此单字符 |
| + | 匹配一个或多个字符 |
| ? | 匹配模式出现频率,例如使用/XY?Z/匹配X Y Z或Y Z |
| [] | 只匹配[]内字符。可以是单个字符,也可以是字符序列。可以使用-表示[]内字符序列范围,如用[1-5]代替[1 2 3 4 5] |
| [x-y] | 匹配以字符范围组成的组中的一个字符 |
| [^] | 匹配一个不在范围内的字符 |
| . | 只匹配任意单字符 |
| pattern{n} | 只用来匹配前面pattern出现次数,n为次数 |
| pattern{n,}m | 含义同上,但次数最少为n* |
| pattern{n,m} | 含义同上,但pattern出现次数在n与m之间 |
Shell转义字符
| 字符 | 说明 |
|---|---|
| ‘’(单引号) | 又叫硬转义,其内部所有的Shell元字符、通配符都会被关掉。注:硬转义中不允许出现’(单引号) |
| (反斜杠) | 又叫转义,去除其后紧跟的元字符或通配符的特殊意义 |
Shell逻辑运算符及表达式
条件运算符
| 运算符号 | 代表意义 | 应用 | 说明 |
|---|---|---|---|
| = | 等于 | 整型或字符串比较:str1=str2 | 字符串str1和字符串str2相等时返回真,如果在[]中,只能是字符串 |
| == | 等于 | 整型或字符串比较:str1==str2 | 字符串str1和字符串str2相等时返回真,如果在[]中,只能是字符串 |
| != | 不等于 | 整型或字符串比较:str1!=str2 | 字符串str1和字符串str2不相等时返回真,如果在[]中,只能是字符串 |
| < | 小于 | 整型或字符串比较:str1<str2 | 按字典顺序排序,字符串str1在字符串str2之前,在[]中,它表示字符串,如需使用请转义< |
| > | 大于 | 整型或字符串比较:str1>str2 | 在[]中,它表示字符串,如需使用请转义> |
| -eq | 等于 | 整型比较:int1 -eq int2 | 如果int1等于int2,则返回真 |
| -ne | 不等于 | 整型比较:int1 -ne int2 | 如果int1不等于int2,则返回真 |
| -lt | 小于 | 整型比较:int1 -lt int2 | 如果int1小于int2,则返回真 |
| -gt | 大于 | 整型比较:int1 -gt int2 | 如果int1大于int2,则返回真 |
| -le | 小于或等于 | 整型比较:int -le int2 | 如果int1小于或等于int2,则返回真 |
| -ge | 大于或等于 | 整型比较:int1 -ge int2 | 如果int1大于或等于int2,则返回真 |
| -z | 空字符串 | 字符串比较:-z string | 字符串string为空串(长度为0)时返回真 |
| -n | 非空字符串 | 字符串比较:-n string | 字符串string为非空字符串时返回真 |
逻辑运算符
| 运算符号 | 代表意义 | 应用 | 说明 |
|---|---|---|---|
| -a | 双方都成立(and) | 逻辑表达式 -a 逻辑表达式 | 在[]表达式中使用 |
| -o | 单方成立(or) | 逻辑表达式 -o 逻辑表达式 | 在[]表达式中使用 |
| ! | 逻辑否,条件为假,结果为真 | ||
| && | 双方都成立(and) | 逻辑表达式 && 逻辑表达式 | 在[[]]表达式中使用 |
| \ | \ | 单方成立(or) |
文件和目录判断符
| 逻辑符号 | 代表意义 | 应用 | 说明 |
|---|---|---|---|
| -f | 判断文件是否存在 | -f filename | 当filename存在并且是正规文件时返回真 |
| -d | 判断目录是否存在 | -d pathname | 当pathname存在并且是一个目录时返回真 |
| -b | 判断是否为一个块文件 | -b filename | 当filename存在并且是块文件时返回真(返回0) |
| -c | 判断是否为一个字符文件 | -c filename | 当filename存在并且是字符文件时返回真 |
| -S | 判断是否为一个socket | -S filename | 当filename存在并且是socket时返回真 |
| -L | 判断是否为一个符号链接文件 | -L filename | 当filename存在并且是符号链接文件时返回真 |
| -e | 判断文件或目录是否存在 | -e pathname | 当由pathname指定的文件或目录存在时返回真 |
程序的逻辑卷标判断符
| 逻辑符号 | 代表意义 | 应用 | 说明 |
|---|---|---|---|
| -G | 判断是否由GID所执行的程序所拥有 | -G pathname | 当由pathname指定的文件或目录存在,并且属于当前进程有效用户ID的用户的用户组时返回真 |
| -O | 判断是否由UID所执行的程序所拥有 | -O pathname | 当由pathname指定的文件或目录存在,并且被当前进程有效用户ID的用户拥有时返回真 |
| -p | 判断是否为程序间传送信息的命名管道或FIFO | -p filename | 当filename存在并且是命名管道时返回真 |
档案的属性判断符
| 逻辑符号 | 代表意义 | 应用 | 说明 |
|---|---|---|---|
| -r | 判断是否为可读的属性 | -r pathname | 当由pathname指定的文件或目录存在并且可读时返回真 |
| -w | 判断是否为可以写入的属性 | -w pathname | 当由pathname指定的文件或目录存在并且可写时返回真 |
| -x | 判断是否为可执行的属性 | -x pathname | 当由pathname指定的文件或目录存在并且可执行时返回真 |
| -s | 判断是否为非空白档案 | -s filename | 当filename存在并且文件大小大于0时返回真 |
| -u | 判断是否具有SUID的属性 | -u pathname | 当由pathname指定的文件或目录存在并且设置了SUID位时返回真 |
| -g | 判断是否具有SGID的属性 | -g pathname | 当由pathname指定的文件或目录存在并且设置了SGID位时返回真 |
| -k | 判断是否具有粘滞的属性 | -k pathname | 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真 |
两个档案之间的判断与比较符
| 逻辑符号 | 代表意义 | 应用 | 说明 |
|---|---|---|---|
| -nt | 第一个比第二个档案新 | file1 -nt file2 | file1比file2新时返回真 |
| -ot | 第一个比第二个档案旧 | file1 -ot file2 | file1比file2旧时返回真 |
| -ef | 第一个与第二个档案为同一个档案 | file1 -ef file2 | file1和file2是同一个档案时返回真 |

