概括描述shell特殊字符用于模式匹配

运维 系统运维
shell特殊字符 中除使用普通字符外,还可以使用一些具有特殊含义和功能的特殊字符。在使用它们时应注意其特殊的含义和作用范围。下面分别对这些特殊字符加以介绍。

学习特殊字符时,你可能会遇到shell特殊字符问题,以社区支持的方式开发Linux发行版Fedora Core Linux,而Red Hat公司原来Red Hat Linux的开发团队也将继续参与这一发行版本的开发工作。这里将介绍shell特殊字符问题的解决方法,在这里拿出来和大家分享一下。

shell特殊字符

shell特殊字符 中除使用普通字符外,还可以使用一些具有特殊含义和功能的特殊字符。在使用它们时应注意其特殊的含义和作用范围。下面分别对这些特殊字符加以介绍。

通配符

通配符用于模式匹配,如文件名匹配、路经名搜索、字符串查找等。常用的通配符有*、?和括在方括号[ ]中的字符序列。用户可以在作为命令参数的文件名中包含这些通配符,构成一个所谓的“模式串”,在执行过程中进行模式匹配。代表任何字符串(长度可以不等),例如:“f*”匹配以f打头的任意字符串。但应注意,文件名前的圆点(.)和路经名中的斜线(/)必须显式匹配。例如“*”不能匹配.file,而“.*”才可以匹配.file。

代表任何单个字符。

[] 代表指定的一个shell特殊字符范围,只要文件名中[ ]位置处的字符在[ ]中指定的范围之内,那么这个文件名就与这个模式串匹配。方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连字符(-)组成。例如,f [a- d] 与f [abcd]的作用相同。Shell将把与命令行中指定的模式串相匹配的所有文件名都作为命令的参数,形成最终的命令,然后再执行这个命令。
下面我们给出表10-1说明这些通配符的具体含义。 表10-1 通配符含义举例 模式串意义

当前目录下所有文件的名称。

*Text*
当前目录下所有文件名中包含有Text的文件的名称。
[ab-dm]*
当前目录下所有以a、b、c、d、m开头的文件的名称。
[ab-dm]?
当前目录下所有以a、b、c、d、m开头且后面只跟有一个shell特殊字符的文件的名称。
/usr/bin/??
目录/usr/bin下所有名称为两个字符的文件的名称。

特别需要注意的是,连字符“-”仅在方括号内有效,表示字符范围,如在方括号外面就成为普通字符了。而*和?只在方括号外面是通配符,若出现在方括号之内,它们也失去通配符的能力,成为普通字符了。例如,模式“- a[*?]abc”中只有一对方括号是通配符,*和?均为普通字符,因此,它匹配的字符串只能是- a*abc和- a?abc。

***说明一下使用通配符时需要注意的一些问题。由于*、?和[ ]对于shell来说具有比较特殊的意义,因此在正常的文件名中不应出现这些字符。特别是在目录名中不要出现它们,否则shell特殊字符匹配起来可能会无穷的递归下去。另外要注意的一点是:如果目录中没有与指定的模式串相匹配的文件名,那么shell特殊字符将使用此模式串本身作为参数传给有关命令。这可能就是命令中出现特殊字符的原因所在。

【编辑推荐】

  1. Linux的Shell编程 Shell基本语法
  2. Linux的Shell编程 Shell程序设计的流程控制
  3. Linux的Shell编程 运行Shell程序的方法
  4. Linux的Shell编程bash的内部命令
  5. 简介不常见的shell组合控制键
责任编辑:佚名 来源: CSDN
相关推荐

2010-07-21 13:35:22

Perl模式匹配

2009-11-20 14:48:07

2010-01-04 17:59:14

Ubuntu PHP

2009-12-30 17:01:56

Ubuntu VMwa

2009-12-31 13:56:16

Ubuntu shel

2023-04-11 08:54:57

字符串匹配算法

2009-12-23 15:20:22

安装Fedora 5

2009-06-17 09:01:29

Linuxshell特殊字符

2009-12-23 18:18:04

2010-01-06 18:40:10

Ubuntu无线网卡

2019-08-02 09:13:22

Linux脚本语言欢聚时代

2022-08-29 15:26:58

MySQLSQL模式

2011-03-15 15:20:46

2009-10-14 15:34:29

VB.NET窗体编程模

2009-08-20 13:38:58

C#正则表达式

2009-12-22 15:29:40

Fedora 8系统安

2010-07-26 10:51:26

Perl模式匹配

2010-11-26 13:58:48

MySQL字符串匹配

2012-02-02 09:21:39

编程

2010-07-26 11:02:19

Perl模式匹配
点赞
收藏

51CTO技术栈公众号