zoukankan      html  css  js  c++  java
  • 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中的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

  • 相关阅读:
    【原创】绝对居中
    MSSQL数据库各角色权限
    如何升级至 XHTML?
    XHTML 语法
    5.4 删除一个元素节点或者文本节点
    Ajax实现无刷新的获取数据并绑定到GridView,以及无刷新更新数据[转]
    鼠标滑过时显示图片内容隐藏和鼠标滑过图片隐藏内容显示的两种小方法
    纯CSS3魔方的制作
    201920201学期 20192415 《网络空间安全专业导论》XOR加密
    201920201学期 20192415 《网络空间安全专业导论》第四周学习总结
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7399164.html
Copyright © 2011-2022 走看看