文档章节

Linux Shell 通配符、元字符、转义符使用实例介绍

陶邦仁
 陶邦仁
发布于 2015/04/22 16:04
字数 835
阅读 350
收藏 1

说到shell通配符(wildcard),大家在使用时候会经常用到。下面是一个实例:

在此输入图片描述

##Linux shell通配符(wildcard)## 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在 命令的“参数”里(它不用在 命令名称里, 也不用在 操作符上)。**当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。**总之,通配符实际上就是一种shell实现的路径扩展功能。在通配符被处理后, shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。

我们回过头分析上面命令吧:在命令2中,*.bin 实际shell搜索文件,找到了符合条件的文件,命令会变成:ls idea.bin,实际在执行ls 时候传给它的是idea.bin 。

而命令3中d*.bin 由于当前目录下面没有这样的文件或目录,直接将”d*.bin” 作为ls参数,传给了 ls 。这个时候”*” 只是一个普通的 ls 参数而已,已经失去了它通配意义。 由于找不到文件,所以会出现:无法访问提示!

Shell常见通配符:

在此输入图片描述

需要说明的是:通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆。把通配符理解为shell 特殊代号字符就可。而且涉及的只有,*,? [] ,{} 这几种。

##Shell元字符(特殊字符 Meta)## Shell 除了有通配符之外,由Shell 负责预先先解析后,将处理结果传给命令行之外,Shell还有一系列自己的其他特殊字符。

在此输入图片描述

加入”*” 都是作用在命令名直接。可以看到shell 元字符,基本是作用在命令上面,用作多命令分割(或者参数分割)。因此看到与通配符有相同的字符,但是实际上作用范围不同。所以不会出现混淆。

##Shell转义符## 有时候,我们想让通配符,或者元字符 变成普通字符,不需要使用它。那么这里我们就需要用到转义符了。 Shell提供转义符有三种。

在此输入图片描述

示例如下:

在此输入图片描述

##Shell解析脚本的过程##

在此输入图片描述

如果用双引号包括起来,Shell检测跳过了1-4步和9-10步,单引号包括起来,Shell检测就会跳过了1-10步。也就是说,双引号 只经过参数扩展、命令代换和算术代换就可以送入执行步骤,而单引号转义符直接会被送入执行步骤。而且,无论是双引号转义符还是单引号转义符在执行的时候能够告诉各个命令自身内部是一体的,但是其本身在执行时是并不是命令中文本的一部分。

© 著作权归作者所有

共有 人打赏支持
陶邦仁
粉丝 1636
博文 420
码字总数 1483887
作品 0
海淀
技术主管
私信 提问
Linux Shell 通配符、元字符、转义符使用实例介绍

说到shell通配符(wildcard),大家在使用时候会经常用到。下面是一个实例: 从上面这个实例,不知道大家有没有发现问题呢。我们先了解一下,通配符相关知识,再分析下这个实例吧。 一、lin...

大数据之路
2012/07/31
0
0
linux通配符和正则表达式

1、 通配符 通配符是shell在做PathnameExpansion时用到的。说白了一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等。 1、1 Shell常见通配符: 1、2 shell Meta字符(元字符...

游骑兵vtx
2017/10/07
0
0
Linux技术学习:Io重定向 Redirection 详解

文件描述符在bash中比较少用,从0开始用户表示进行的数据流,0表示标准输入,1表示标准输出,2表示标注错误输出,其他从3开始。最为常用的场景是将错误消息输出到某个文件,可以加上2>file到...

长沙千锋
2018/05/03
0
0
Linux 下 grep 命令的正则表达式规范

使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,这就是正则表达式。Linux 的 grep 命令是一种查找过滤工具,用于在文件中查找指定模式的字符串,其支持正则表达式。 通配符和正则...

Konghy
2015/10/27
0
0
Linux 命令行通配符及转义符的实现

我们想对一类文件批量操作,例如批量查看硬盘文件属性,那么正常命令会是: [root@linuxprobe ~]# ls /dev/sda[root@linuxprobe ~]# ls /dev/sda1[root@linuxprobe ~]# ls /dev/sda2[root@li...

kaixin_code
2018/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

第1章

背景:因为最近在考教师资格证,考的是计算机学科,所以学科考的是:信息技术学科知识与教学能力;因此图书馆借了一本书,把最基本的知识看一遍,为之后的笔试和面试做充足的准备。 大学计算...

怪咖先生forever
32分钟前
1
0
element-ui之el-collapse-transition(折叠展开动画)源码解析学习

项目中发现同事使用了element-ui的el-collapse-transition来做折叠展开效果,打开源码看了下发现挺有意思,来解析学习一番。 el-collapse-transition的引入方式 // fade/zoom 等import 'e...

学霸猫
53分钟前
1
0
解释器模式_实战

前言 解释器模式是什么?这个设计模式其实比较冷门,不太会解释,用例子说明把。解释器模式一般用在sql,xml,json解析等场景。比如说你有一个json对象,你要获取这个对象中任意一个节点的值。...

grace_233
今天
6
0
告别2018

今天中午从喵喵家回来之后,倒头就睡到下午4点了。可能是之前透支的身体,在我放松下来后,开始觉得疲惫了,所以最近估计会进入嗜睡期。醒来之后,拿了包花生,开了瓶低糖菊花茶,听着网易云...

七木网络科技
今天
4
0
MySql数据库分表分区实践

1. 背景 —— 公司物联网项目 海量设备通过物联网服务接入云端,设备每30s上报一次自身数据(以下称为动态数据)。 物联网服务将设备上报的数据转发给数据处理网关,由数据入库网关执行批量入...

吴伟祥
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部