linux中的通配符、元字符、转义符
linux中的通配符、元字符、转义符
shell命令的构成
每条linux命令中的每一个character都是下面两种之中的一个:
- literal:普通纯文本
- 保留字:通配符、元字符、转义字符
通配符
通配符是由shell处理的(不是由所涉及到命令语句处理的。事实上我们在shell各个命令中也没有发现有这些通配符介绍), 它仅仅会出如今命令的“參数”里(它不用在命令名称里,也不用在操作符上)。当shell在“參数”中遇到了通配符时。shell会将其当作路径或文件名称去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展)。否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符实际上就是一种shell实现的路径扩展功能。在通配符被处理后, shell会先完毕该命令的重组,然后再继续处理重组后的命令,直至运行该命令。
通配符和正則表達式看起来非常像。但事实上不同,它仅仅是shell的特殊字符而已。
*
:匹配0或多个字符?
:匹配随意一个字符[list]
:匹配list中的随意单一字符[!list]
:匹配非list中的随意单一字符[a1-a3]
:匹配a1和a3之间的随意一个字符。如0-9,a-z{string1,string2,string3...}
:匹配string1,或string2或……当中的一个字符串
元字符meta
IFS
:由<space><tab><enter>
三者之中的一个组成,用来拆分command line中的wordCR
:由<enter>
产生,用来结束一条command line=
:赋值$
:变量替换>
:stdout<
:stdin|
:管道命令&
:重定向file descriptor,或将命令置于后台运行`
:用于替换()
:将命令置于nested subshell中运行,或用于运算或命令替换{}
:将命令置于non-named function中运行,或用于变量替换的界定范围;
:在一个命令结束时。忽略其返回值,继续运行吓一条命令&&
:在一个命令结束时。若返回值为true。继续运行下一个命令||
:在一个命令结束时,若返回值为false,继续运行下一个命令!
:运行history列表中的命令
转义符
当我们要关闭meta的功能时。就用到了转义符。
'
(单引號)hard quote,凡在hard quote中的全部meta都被关闭。"
(双引號)soft quote,在soft quote中的大部分meta都会被关闭,但保留某些meta的功能(如$)。\
(反斜线)escape,仅仅有紧接在escape(跳脱字符)之后的单一meta才会被关闭。
dquote中不被关闭的meta:$
,反引號`
。反斜杠\
。
example
➜ ~ ls -d P* # 以P开头的文件
Pictures Projects Public
➜ ~ A=B C #<space>未被关闭。作为IFS处理。
zsh: command not found: C
➜ ~ A="B C" #<space>在"中被关闭,当作普通字符使用
➜ ~ echo $A
B C
➜ ~ A="B
dquote> C
dquote> " #<Enter>在"中被关闭,当作普通字符使用,因为command line没有得到CR字符,因此进入第二个shell prompt(以>符号表示)。
➜ ~ echo $A
B
C
➜ ~ A=B\ C # \使<space>的功能关闭,仅当普通空格使用
➜ ~ echo '$A' # $在squote中功能关闭。仅作literal
$A
➜ ~ echo "$A" # $在dquote中功能未关闭,作meta用
B C
➜ ~ echo \$A
$A
➜ ~
reference
http://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html
http://bbs.chinaunix.net/thread-2076396-1-1.html
linux中的通配符、元字符、转义符的更多相关文章
- Linux 命令行通配符及转义符的实现
我们想对一类文件批量操作,例如批量查看硬盘文件属性,那么正常命令会是: [root@linuxprobe ~]# ls /dev/sda [root@linuxprobe ~]# ls /dev/sd ...
- Linux学习之管道符、重定向、通配符、转义符、环境变量
Linux学习之管道符.重定向.通配符.转义符.环境变量 1. 输入输出重定向 输入重定向是指把文件导入命令中. 输出重定向是指把原本要输出到屏幕的数据信息写入指定文件中. a 标准输入重定向(STD ...
- [转帖]Linux教程(13)- Linux中的通配符和正则表达式
Linux教程(13)- Linux中的通配符和正则表达式 2018-08-22 06:16:44 钱婷婷 阅读数 39更多 分类专栏: Linux教程与操作 Linux教程与使用 版权声明:本文 ...
- Linux就该这么学:重定向,管道符,通配符,转义符,环境变量
第三章:重定向,管道符,环境变量 3.1 输入输出重定向 定义:输入重定向是指将文件导入命令中,输出重定向是指将原本显示到屏幕的信息输出问文件.相较于输入重定向,输出重定向使用的更多,下面重点介绍输出 ...
- 自动化运维之shell通配符,转义符,和元字符(二)
1 shell通配符 通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆.把通配符理解为shell特殊代号字符就可. 二.shell元字符 shell除了有通配符之外,由shel ...
- linux中的通配符与正则表达式
在linux中,有通配符及正则表达式,那么什么是通配符和正则表达式,什么时候用? 通配符 它是由shell解析,并且一般用于匹配文件名,实际上就是shell解释器去解析的特殊符号,linux系统通 ...
- 每天进步一点点——Linux中的文件描写叙述符与打开文件之间的关系
转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆能够看成是文件,文件又可分为:普通 ...
- C#学习笔记9:C#中的变量、转义符、显式转换和隐式转换
1.变量的特性:可以重复的赋值 int a=4; a=9; 2.常量:const int number=10:这个常量不可变 如果你声明的变量,不想被其他人修改,那么就修饰为常量 声明在类的下面, ...
- Linux中通过Socket文件描述符寻找连接状态介绍
针对下文的总结:socket是一种文件描述符 进程的打开文件描述符表 Linux的三个系统调用:open,socket,pipe 返回的都是一个描述符.不同的进程中,他们返回的描述符可以相同.那么,在 ...
随机推荐
- codevs 5929 亲戚
5929 亲戚 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不 ...
- BZOJ2081 : [Poi2010]Beads
暴力枚举$k$,对于一个子串,计算它正着的hash值以及反着的hash值,取最小值得到其最终hash值. 对于$k$,一共有$\lfloor\frac{n}{k}\rfloor$个子串,计算出它们的最 ...
- 11、Redis的持久化(RDB、AOF)
写在前面的话:读书破万卷,编码如有神 --------------------------------------------------------------------------------- ...
- Codeforces Round #374 (Div. 2) A. One-dimensional Japanese Crosswor 水题
A. One-dimensional Japanese Crossword 题目连接: http://codeforces.com/contest/721/problem/A Description ...
- vs 2010 :类型化数据集DataSet应用
1.启动服务器资源管理器,建立数据库连接 2.在项目中创建数据集 3.为数据集添加表对象 4.为表适配器tableAdapter添加参数化查询 5.修改表适配器的主查询,或添加其他查询 Update: ...
- redis 写磁盘出错 Can’t save in background: fork: Cannot allocate memory (转)
查看 Redis 日志 发现系统在频繁报错: [26641] 18 Dec 04:02:14 * 1 changes in 900 seconds. Saving… [26641] 18 Dec 04 ...
- HDU 3976 Electric resistance (高斯消元法)
Electric resistance Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- General PE format layout
- jquery智能弹出层,自己主动推断位置
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- WinForm基于插件开发实现多项配置存储
一.课程介绍和实例在线演示 明人不说暗话,跟着阿笨一起玩WinForm.本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C ...