通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在 命令的“参数”里(它不用在 命令名称里, 也不用在 操作符上)。当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符 实际上就是一种shell实现的路径扩展功能。在 通配符被处理后, shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。
★ * 代表0个到无穷多个任意字符,a*b a与b之间可以有任意长度的任意字符,也可以一个也没有,如aggb,a–b,a789b,ab
★?代表一定有一个任意字符,a?b a与b之间必须也只能有一个字符,但只能有一个字符,可以是任意字符,如aab,a-b,abb,
★[] 代表一定有一个在中括号之内的字符(非任意字符)。例如a[xyz]b,a与b之间必须也只能有一个字符,但只能是x或y或z,如axb,ayb,azb。
★[-] 有-号在中括号内,代表在编码顺序内的任意单一字符,[0-9]代表0-9内的所有数字中的单一字符,a[0-9]b,a与b之间必须也只能有一个字符,如a0b,a2b, a9b
★[^]中括号内有^字符,代表非括号内的其他字符,[^abc] 表示一定有一个字符,只要是非a,b,c就可以接受
★[!]同上
★{string1,string2,……}匹配string1或者string2……其一的字符串,a{abc,xyz,123}b,ab之间只能是abc,xyz,123,其中之一。
bash环境中的特殊符号
◆#批注符号,这个被使用在script当中,视为说明,其后的数据均不执行。
◆\转义符号,将“特殊字符或者通配符”还原成一般字符。
◆|管道,分隔两个管道命令的界定
◆$使用变量前导符,/目录符号,路径分隔的符号
◆!逻辑运算意义上的非
◆> >> 数据流重定向,输出导向stdout,
◆< << 数据流重定向,输入导向stdin,
◆‘ ’ 单引号,不具有变量的置换功能
◆ “ ” 双引号,具有变量置换的功能
◆` ` 中间为可以先执行的命令 也可以使用$()
◆; 在前一个命令结束时,忽略其返回值,继续执行下一个命令
◆&& 短路或,在前一个命令结束时,若返回值为ture,继续执行下一个命令
◆|| 短路与,在前一个命令结束时,若返回值为false,继续执行下一个命令
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88886