linux中的通配符、元字符、转义符

linux中的通配符、元字符、转义符

  • linux中的通配符元字符转义符

    • shell命令的构成

      • 通配符
      • 元字符meta
      • 转义符
    • example
    • reference

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中的word
  • CR:由<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

时间: 2024-10-23 21:20:57

linux中的通配符、元字符、转义符的相关文章

每天进步一点点——Linux中的文件描写叙述符与打开文件之间的关系

转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆能够看成是文件,文件又可分为:普通文件.文件夹文件.链接文件和设备文件.文件描写叙述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引.其是一个非负整数(一般是小整数),用于指代被打开的文件.全部运行I/O操作的系统调用都通过文件描写叙述符.程序刚刚启动的时候.0是标准输入,1是标准输出,2是标准错误. 假设此

Linux中的通配符和正则表达式

通配符: 文件名统配是bash的特性之一,通配符一般用于文件名的匹配. *   :任意长度的任意字符 ?   :匹配任意单字符 []  :匹配指定范围内的任意单字符 例:[abc], [a-z], [0-9], [0-9a-z] [^] :匹配指定范围以外的任意单字符 例:[^0-9a-z] 字符集合: [:space:] :所有空白字符 [:punct:] :所有标点符号 [:lower:] :所有小写字母 [:upper:] :所有大写字母 [:digit:] :所有数字 [:alnum:]

带你认识Linux中的通配符

通配符是一种特殊语句,用来模糊搜索文件,当查找文件夹时,可以使用它来代替一个或多个真正的字符,它使得文件管理更加快速,便捷,大大的提升了工作效率. 常用的通配符有 * .? .[] 等(可通过man 7 glob的帮助文档来查看所有通配符) 1,* 代表任意长度的任意字符: 示例:ls -d /etc/a* 显示/etc目录下所有以a开头的文件与目录: 2,? 表示任意单个字符: 示例: ls a?b 显示当前目录下所有以a开头中间有一个字符b结尾的文件,a10b中间夹2个字符,因此不显示: 3

linux中shell如何输出换行符

echo -e "a\tb\tc\nd\te\tf" 加-e

linux shell通配符、元字符、转义符

Linux Shell 通配符.元字符.转义符使用实例介绍 说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1 1 2 3 4 [[email protected] ~/shell]$ ls a.txt  b.txt  c.old #2 1 2 3 4 [[email protected] ~/shell]$ ls *.txt a.txt  b.txt #3 1 2 [[email protected] ~/shell]$ ls d*.txt ls: 无法访

linux shell转义符 元字符 通配符 特殊字符汇总

一.linux shell通配符(wildcard) 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在命令的"参数"里(它不用在命令名称里,也不用在操作符上).当shell在"参数"中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行替换(路径扩展):否则就将该通配符作为一个普通字符传递给"命令",然后再由命令进

Linux中的元字符和转义符 单引号 硬引号 双引号 软引号

Linux中的元字符和转义符  单引号  硬引号  双引号  软引号 Linux就这个范儿 Linux就这个范儿 P182单引号:硬引号,所有元字符特殊意义都会关掉双引号:软引号,只允许出现特定元字符,对特殊字符会进行解析 元字符

《LINUX SHELL脚本攻略》学习(1)--shell中echo的转义符

0.echo的命令项:(默认bash支持,csh不支持) -n     不输出换行符       -e     打开反斜杠ESC转义       -E     取消反斜杠ESC转义 (默认) 1.echo和printf都可以打印输出信息,区别在于echo默认是添加换行符(\n)的: echo -n "xxxx" ,也可以取消换行符 2.echo可以通过-e打开转义符,如输出颜色命令: #!/bin/bash # 先定义一些颜色:1是高亮 red='\e[0;31m'          

Linux Shell之通配符、转义字符、元字符

这里分别给大家讲解Linux Shell 通配符http://www.maiziedu.com/course/482/.转义字符.元字符. 一.linux shell通配符(wildcard) 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在命令的"参数"里(它不用在命令名称里,也不用在操作符上).当shell在"参数"中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻