`
tang9140
  • 浏览: 35126 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux Shell 通配符、转义字符、元字符、特殊字符

 
阅读更多

一、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 通配符、元字符、转义符使用实例介绍.docx

    Linux Shell 通配符、元字符、转义符使用实例介绍 Linux Shell 中的通配符(Wildcard)是由 Shell 处理的,它只会出现在命令的参数里,不会出现在命令名称里或操作符上。当 Shell 在参数中遇到了通配符时,Shell 会...

    Linux系统管理-shell编程2.pdf

    转义字符"\\`"用于取消前面特殊符号的特殊意义。 更高级的正则表达式元字符还包含重复指定的"{n}",表示前面的字符恰好出现n次;"{n,}"表示前面的字符出现不小于n次;"{n,m}"表示前面的字符至少出现n次,最多出现m...

    linux&unixShell编程2

    - **元字符转义**:使用`\`对特殊字符进行转义,如`\*`匹配星号字符本身。 7. **Shell编程技巧**: - **条件测试**:`test`命令或`[ ]`结构用于进行逻辑判断。 - **逻辑运算符**:`&&`和`||`用于条件连接,`!`...

    shell脚本的简单应用和实列

    #### 二、Shell元字符及其使用方法 1. **单引号('')**:用于将其中的所有字符都视为字面量,即不解析任何特殊符号。 - 示例:`echo 'Hello, world!'` 将直接输出 `Hello, world!`,即使字符串中含有特殊字符或...

    Linux/Unit Shell 脚本 指南 自己总结精华版

    | \ | 转义符,屏蔽元字符的特殊意义 | | \&lt;\&gt; | 精确匹配符号 | | \{n\} | 匹配前面字符出现n次 | | \{n,\} | 匹配前面字符至少出现n次 | | \{n,m\} | 匹配前面字符出现n次到m次 | **实例解析** - **任意次数重复...

    shell模糊匹配与正则详解

    在Linux Shell中,常见的正则表达式元字符有: 1. `*`:匹配前面的普通字符0次或多次。例如,`JO*B`将匹配`JOB`、`JBB`、`JJBOB`等。 2. `.`:匹配任意单个字符,包括换行符。例如,`.73`匹配任何以`73`结尾的字符...

    c shell使用教程

    - **`\`**:转义字符,使用``\\``引用。 - **`$`**:变量替换,使用``\$``引用。 - **`"`**:双引号的结束标记,使用``\"``引用。 - **`space tab newline`**:单词之间的分隔符。 #### 命令方式 csh支持多种命令...

    shell.zip_Linux/Unix编程_Shell__Linux/Unix编程_Shell_

    "Linux Shell 通配符、元字符、转义符使用实例介绍.docx"则专注于Shell中的特殊字符,如星号(*)匹配任意多个字符,问号(?)匹配单个字符,方括号([])用于匹配指定范围内的字符。转义符(\)用于取消特殊字符的特殊含义...

    Shell编程-正则表达式

    本篇文章将详细介绍Shell编程中的正则表达式的基本概念、常用元字符及其使用方法,并通过具体示例加深理解。 #### 二、正则表达式与通配符的区别 在Shell环境中,正则表达式和通配符虽然都是用于模式匹配的技术,...

    第02章 Linux操作基础1

    元字符在Shell中具有特殊意义,例如`*`、`?`用于匹配文件名,`、`&gt;`用于重定向,`\`用于转义特殊字符,`$`用于引用变量,`#`用于注释,`;`用于分隔命令,空格和换行符则用于分隔命令及其参数。 本章的学习目标涵盖...

    UNIX-SHELL编程

    2. **正则表达式通配符**:正则表达式是更复杂的匹配模式,包含元字符如`^`(行首)、`$`(行尾)、`*`(重复)、`[]`(字符集)、`\`(转义)等。例如,`^$`匹配空行,`[A-Za-z]`匹配所有字母,`[A-Za-z]*`匹配所有...

    shell脚本的介绍与教学

    #### Shell通配符(元字符) 1. **星号 `*`**:匹配任意数量的任意字符。例如`ls in*`列出以`in`开头的所有文件。 2. **问号 `?`**:匹配单个任意字符。例如`lll?ve`会匹配`love`、`lovel`、`live`等。 3. **方...

    探索shell1

    - **元字符**: Shell中有一些特殊字符具有特定的意义,如`*`代表任意字符,`\`用于消除字符的特殊含义。 #### 四、Shell命令与执行 - **外部命令**: 通常是磁盘上的可执行文件,由shell调用执行。 - **内部命令**:...

    shell脚本1

    - **元字符 (Metacharacters)**:正则表达式中有一些特殊的元字符,如 `.`、`*`、`+`、`?`、`[]`、`()` 等,这些字符具有特殊的意义,用于匹配特定的模式。 - **元字符转义**:在某些情况下,可能需要将元字符当作...

    Unix程序设计环境课件:第4章 shell编程初步.ppt

    - 元字符在Shell中具有特殊含义,例如`&gt;`用于重定向输出,`&gt;&gt;`用于追加输出,`用于指定输入源。 - `|`用于管道,`;`作为命令分隔符,`&`用于后台执行命令。 - 其他元字符包括通配符`*`匹配零个或多个字符,`?`...

    shell 里面的奇葩字符实现

    13. **反斜杠** (`\`):用于转义特殊字符,防止其被Shell解释。 14. **点号** (`.`):可以用作`source`命令,执行脚本内容;作为文件名前缀表示隐藏文件;表示当前目录;两个点表示上一级目录;在正则表达式中也是...

    grep命令调研文档

    - `\`:转义字符,用于取消某些元字符的特殊意义。 例如,要匹配所有以 `.txt` 结尾的文件名,可以使用以下命令: ```sh $ grep "\\.txt$" * ``` #### 四、类名与通配符 除了上述提到的基本正则表达式元字符外,...

    shell脚本-基础正则和扩展正则.docx

    14. `\` : 用来转义元字符 - 例如:`/2\.5/` 可以匹配 `2.5` 字符串 15. `|` : 或者 - 例如:`/a\|b/` 可以匹配 `a` 或 `b` 字符串 16. `( )` : 分组,将括号内的内容作为一个单位来看 - 例如:`sed` 命令可以...

Global site tag (gtag.js) - Google Analytics