一、linux shell通配符(wildcard)
通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在命令的“参数”里(它不用在命令名称里,也不用在操作符上)。当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行替换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。
总之,通配符实际上就是一种shell实现的路径扩展功能。在通配符被处理后, shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。
例如以下命令:
[root@localhost wildcard]# ls
a.htm b.htm
[root@localhost wildcard]# ls *.htm
a.htm b.htm
[root@localhost wildcard]# ls d*.htm
ls: d*.htm: 没有那个文件或目录
分析如下:
第2个命令中,对于参数*.htm,shell在当前目录下能搜索到相匹配文件,会换成a.htm b.htm。实际执行的是ls a.htm b.htm命令。
第3个命令,对于参数d*.htm, shell在当前目录找不到相匹配的文件,则直接将d*.htm作为ls参数,实际执行的是ls d*.htm。由于找不到该文件,所以会出现:没有那个文件或目录。
了解了shell通配符,我们现在看下,shell常见通配符有那一些了。
shell通配符
字符
含义
实例
* |
匹配0或多个字符 |
a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, a01b, ab等 |
? |
匹配任意一个字符 |
a?b a与b之间有且只有一个字符, 可以是任意字符, 如aab, adb, a0b等 |
[list] |
匹配list中的任意单一字符 |
a[xyz]b a与b之间有且只有一个字符, 且只能是x或y或z, 如: axb, ayb, azb。 |
[!list] |
匹配除list中的任意单一字符 |
a[!0-9]b a与b之间有且只有一个字符, 但不能是数字, 如axb, aab, a-b等 |
[c1-c2] |
匹配c1-c2中的任意单一字符 |
a[0-9]b a与b之间有且只有一个字符,该字符是0-9之间的数字,如a0b, a1b,... ,a9b。 |
{string1,string2,...} |
匹配 sring1 或 string2 (或更多)其一字符串 |
a{abc,xyz,123}b a与b之间只能是abc或xyz或123这三个字符串之一。 |
需要说明的是:通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆。把通配符理解为shell特殊代号字符就可。
二、shell元字符
shell除了有通配符之外,由shell负责预先先解析后,将处理结果传给命令行之外,shell还有一系列自己的其他特殊字符。
shell元字符
字符
说明
= |
变量名=值,为变量赋值。注意=左右紧跟变量名和值,中间不要有空格 |
$ |
变量值替换,$变量名替换为shell变量的值;为避免在文本连接时混淆,请使用${变量名};$0...$9 代表shell文件的参数。 |
> |
prog > file 将标准输出重定向到文件。 |
>> |
prog >> file 将标准输出追加到文件。 |
< |
prog < file 从文件file中获取标准输入 |
| |
管道命令,例:p1 | p2 将p1的标准输出作为p2的标准输入 |
& |
后台运行命令,最大好处是无需等待命令执行结束,就可以在同一命令行下继续输入命令 |
() |
在子shell中执行命令 |
{} |
在当前shell中执行命令,或用在变量替换的界定范围(例如上面的${变量名}用法)。 |
; |
命令结束符。例如p1;p2表示先执行p1,再执行p2 |
&& |
前一个命令执行成功后,才继续执行下一个命令。例:p1 && p2 ;若p1执行成功后,才执行p2,反之,不执行p2; |
|| |
前一个命令执行失败后,才继续执行下一个命令。例:p1 || p2 ;若p1执行成功后,不执行p2,反之,才执行p2; |
! |
执行历史记录中的命令 |
~ |
home目录 |
三、shell转义符
有时候,我们想让通配符,或者元字符变成普通字符。那么这里我们就需要用到转义符了。 shell提供转义符有三种。
shell转义字符
字符
说明
'' |
单引号,硬转义,其内部所有的shell元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。 |
"" |
双引号,软转义,其内部只允许出现特定的shell元字符($,`,\):$用于变量值替换、`用于命令替换、\用于转义单个字符 |
\ |
反斜杠,转义,去除其后紧跟的元字符或通配符的特殊意义。 |
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
Linux Shell 通配符、元字符、转义符使用实例介绍 Linux Shell 中的通配符(Wildcard)是由 Shell 处理的,它只会出现在命令的参数里,不会出现在命令名称里或操作符上。当 Shell 在参数中遇到了通配符时,Shell 会...
转义字符"\\`"用于取消前面特殊符号的特殊意义。 更高级的正则表达式元字符还包含重复指定的"{n}",表示前面的字符恰好出现n次;"{n,}"表示前面的字符出现不小于n次;"{n,m}"表示前面的字符至少出现n次,最多出现m...
- **元字符转义**:使用`\`对特殊字符进行转义,如`\*`匹配星号字符本身。 7. **Shell编程技巧**: - **条件测试**:`test`命令或`[ ]`结构用于进行逻辑判断。 - **逻辑运算符**:`&&`和`||`用于条件连接,`!`...
#### 二、Shell元字符及其使用方法 1. **单引号('')**:用于将其中的所有字符都视为字面量,即不解析任何特殊符号。 - 示例:`echo 'Hello, world!'` 将直接输出 `Hello, world!`,即使字符串中含有特殊字符或...
| \ | 转义符,屏蔽元字符的特殊意义 | | \<\> | 精确匹配符号 | | \{n\} | 匹配前面字符出现n次 | | \{n,\} | 匹配前面字符至少出现n次 | | \{n,m\} | 匹配前面字符出现n次到m次 | **实例解析** - **任意次数重复...
在Linux Shell中,常见的正则表达式元字符有: 1. `*`:匹配前面的普通字符0次或多次。例如,`JO*B`将匹配`JOB`、`JBB`、`JJBOB`等。 2. `.`:匹配任意单个字符,包括换行符。例如,`.73`匹配任何以`73`结尾的字符...
- **`\`**:转义字符,使用``\\``引用。 - **`$`**:变量替换,使用``\$``引用。 - **`"`**:双引号的结束标记,使用``\"``引用。 - **`space tab newline`**:单词之间的分隔符。 #### 命令方式 csh支持多种命令...
"Linux Shell 通配符、元字符、转义符使用实例介绍.docx"则专注于Shell中的特殊字符,如星号(*)匹配任意多个字符,问号(?)匹配单个字符,方括号([])用于匹配指定范围内的字符。转义符(\)用于取消特殊字符的特殊含义...
本篇文章将详细介绍Shell编程中的正则表达式的基本概念、常用元字符及其使用方法,并通过具体示例加深理解。 #### 二、正则表达式与通配符的区别 在Shell环境中,正则表达式和通配符虽然都是用于模式匹配的技术,...
元字符在Shell中具有特殊意义,例如`*`、`?`用于匹配文件名,`、`>`用于重定向,`\`用于转义特殊字符,`$`用于引用变量,`#`用于注释,`;`用于分隔命令,空格和换行符则用于分隔命令及其参数。 本章的学习目标涵盖...
2. **正则表达式通配符**:正则表达式是更复杂的匹配模式,包含元字符如`^`(行首)、`$`(行尾)、`*`(重复)、`[]`(字符集)、`\`(转义)等。例如,`^$`匹配空行,`[A-Za-z]`匹配所有字母,`[A-Za-z]*`匹配所有...
#### Shell通配符(元字符) 1. **星号 `*`**:匹配任意数量的任意字符。例如`ls in*`列出以`in`开头的所有文件。 2. **问号 `?`**:匹配单个任意字符。例如`lll?ve`会匹配`love`、`lovel`、`live`等。 3. **方...
- **元字符**: Shell中有一些特殊字符具有特定的意义,如`*`代表任意字符,`\`用于消除字符的特殊含义。 #### 四、Shell命令与执行 - **外部命令**: 通常是磁盘上的可执行文件,由shell调用执行。 - **内部命令**:...
- **元字符 (Metacharacters)**:正则表达式中有一些特殊的元字符,如 `.`、`*`、`+`、`?`、`[]`、`()` 等,这些字符具有特殊的意义,用于匹配特定的模式。 - **元字符转义**:在某些情况下,可能需要将元字符当作...
- 元字符在Shell中具有特殊含义,例如`>`用于重定向输出,`>>`用于追加输出,`用于指定输入源。 - `|`用于管道,`;`作为命令分隔符,`&`用于后台执行命令。 - 其他元字符包括通配符`*`匹配零个或多个字符,`?`...
13. **反斜杠** (`\`):用于转义特殊字符,防止其被Shell解释。 14. **点号** (`.`):可以用作`source`命令,执行脚本内容;作为文件名前缀表示隐藏文件;表示当前目录;两个点表示上一级目录;在正则表达式中也是...
- `\`:转义字符,用于取消某些元字符的特殊意义。 例如,要匹配所有以 `.txt` 结尾的文件名,可以使用以下命令: ```sh $ grep "\\.txt$" * ``` #### 四、类名与通配符 除了上述提到的基本正则表达式元字符外,...
14. `\` : 用来转义元字符 - 例如:`/2\.5/` 可以匹配 `2.5` 字符串 15. `|` : 或者 - 例如:`/a\|b/` 可以匹配 `a` 或 `b` 字符串 16. `( )` : 分组,将括号内的内容作为一个单位来看 - 例如:`sed` 命令可以...