zoukankan      html  css  js  c++  java
  • 【Shell】通配符与特殊符号

    ——来自《鸟哥的Linux私房菜》

    在 bash 的操作环境中还有一个非常有用的功能,那就是通配符 (wildcard) ! 我们利用 bash 处理数据就更方便了!底下列出一些常用的通配符:

    符号 意义
    * 代表『 0 个到无穷多个』任意字符
    ? 代表『一定有一个』任意字符
    [ ] 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』
    [ - ] 若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的!
    [^ ] 若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。

    接下来利用通配符配合 ls 找檔名看看:

    范例一:找出 /etc/ 底下以 cron 为开头的档名
      ll -d /etc/cron*    <==加上 -d 是为了仅显示目录而已
    
    范例二:找出 /etc/ 底下文件名『刚好是五个字母』的文件名
      ll -d /etc/?????    <==由于 ? 一定有一个,所以五个 ? 就对了
    
    范例三:找出 /etc/ 底下文件名含有数字的文件名
      ll -d /etc/*[0-9]*  <==记得中括号左右两边均需 *
    
    范例四:找出 /etc/ 底下,档名开头非为小写字母的文件名:
      ll -d /etc/[^a-z]*  <==注意中括号左边没有 *
    
    范例五:将范例四找到的文件复制到 /tmp 中
      cp -a /etc/[^a-z]* /tmp
    

    除了通配符之外,bash 环境中还有以下特殊符号:

    符号 内容
    # 批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行
    跳脱符号:将『特殊字符或通配符』还原成一般字符
    | 管线 (pipe):分隔两个管线命令的界定(后两节介绍);
    ; 连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同)
    ~ 用户的家目录
    $ 取用变量前导符:亦即是变量之前需要加的变量取代值
    & 工作控制 (job control):将命令变成背景下工作
    ! 逻辑运算意义上的『非』 not 的意思!
    / 目录符号:路径分隔的符号
    >, >> 数据流重导向:输出导向,分别是『取代』与『累加』
    <, << 数据流重导向:输入导向 (这两个留待下节介绍)
    ' ' 单引号,不具有变量置换的功能
    " " 具有变量置换的功能!
    ` ` 两个『 ` 』中间为可以先运行的命令,亦可使用 $( )
    ( ) 在中间为子 shell 的起始与结束
    { } 在中间为命令区块的组合!

    以上为 bash 环境中常见的特殊符号汇整!理论上,你的『档名』尽量不要使用到上述的字符啦!

  • 相关阅读:
    正则表达式实例
    正则表达式理解
    Git初体验
    浏览器加载解析HTML、JS、CSS的过程
    iframe
    纯前端,html页面间传值方式:
    Visual Code 之使用
    seajs使用记
    VBA中Dictionary对象使用(Key,Value)
    存储过程和存储函数和触发器示例
  • 原文地址:https://www.cnblogs.com/shirley130912/p/4301981.html
Copyright © 2011-2022 走看看