通配符

通配符是shell在做路径名扩展时用到的。一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等。
Shell常见通配符:

通配符

  • 匹配 0 或多个字符 a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab。
    ? 匹配任意一个字符 a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b。
    [list] 匹配 list 中的任意单一字符 a[xyz]b a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。
    [!list]或[^list]匹配 除list 中的任意单一字符 a[!0-9]b a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b。
    [c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] a[0-9]b 0与9之间必须也只能有一个字符 如a0b, a1b… a9b。
    [!c1-c2]或[^c1-c2] 匹配不在c1-c2的任意字符 a[!0-9]b 如acb adb
    {string1,string2,…} 匹配 sring1 或 string2 (或更多)其一字符串 a{abc,xyz,123}b 列出aabcb,axyzb,a123b

特殊字符

IFS 由 或 或 三者之一组成(我们常用 space )
CR 由 产生
= 设定变量
$ 取变量值或取运算值

重定向 stdout
<重定向 stdin
| 管道符号 管道“|”可将命令的结果输出给另一个命令作为输入之用:
& 重导向 file descriptor ,或将命令置于背景执行
( ) 将其内的命令置于 nested subshell 执行,或用于运算或命令替换
{ } 将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围
; 在前一个命令结束时,而忽略其返回值,继续执行下一个命令
&& 在前一个命令结束时,若返回值为 true,继续执行下一个命令
|| 在前一个命令结束时,若返回值为 false,继续执行下一个命令
! 运算意义上的非(not)的意思
#注释,常用在脚本中
\ 转义字符,去除其后紧跟的元字符或通配符的特殊意义
管道 |
其它字符不再这里多介绍,比如追加,重定向,注释已经讲过,至于逻辑运算符,放到shell语句中使用才方便,在这里着重介绍一下管道,这里的管道与咱们平常见到的通水的管道是一个意思,水从管道的这头流向那头,而放在linux命令中,则是将命令的结果输出给另一个命令作为输入之用
比如: cat 123.txt | grep -v ‘cccc’

转义字符

有时候,我们想让 通配符,或者元字符 变成普通字符,不需要使用它。那么这里我们就需要用到转义符了。 shell提供转义符有三种。
‘’(单引号) 硬转义,其内部所有的shell 元字符、通配符都会被关掉。
“”(双引号) 软转义,其内部只允许出现特定的shell 元字符:$用于参数替换 `(反单引号,esc键下面)用于命令替换
(反斜杠) 又叫转义,去除其后紧跟的元字符或通配符的特殊意义

正则表达式

linux通配符,特殊字符以及正则表达式

基本组成部分

linux通配符,特殊字符以及正则表达式
正则表达式使用例子
1、“^\d+//+02[09][19][09]” //非负整数(正整数 + 0) 2、“^[0-9]*[1-9][0-9]*” //正整数
3、“^((-\d+)|(0+))//+04[09][19][09]” //非正整数(负整数 + 0) 4、“^-[0-9]*[1-9][0-9]*” //负整数
5、“^-?\d+KaTeX parse error: Expected group after '^' at position 13: ” //整数 6、“^̲\d+(\.\d+)?” //非负浮点数(正浮点数 + 0)
7、“^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))KaTeX parse error: Expected 'EOF', got '\d' at position 19: …/正浮点数 8、“^((-\̲d̲+(\.\d+)?)|(0+(…” //非正浮点数(负浮点数 + 0)
9“^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))KaTeX parse error: Expected 'EOF', got '\d' at position 18: …//负浮点数 10、“^(-?\̲d̲+)(\.\d+)?” //浮点数 
11、“1+//26 12[AZ]+” //由26个英文字母组成的字符串  12、“^[A-Z]+” //由26个英文字母的大写组成的字符串 
13、“2+//26 14[AZaz09]+” //由26个英文字母的小写组成的字符串  14、“^[A-Za-z0-9]+” //由数字和26个英文字母组成的字符串 
15、“^\w+KaTeX parse error: Expected 'EOF', got '\d' at position 41: …串  16、^[A-Za-z\̲d̲]+([-_.][A-Za-z… 邮箱
17、“3+://(\w+(-\w+))(.(\w+(-\w+)))(?\S)?KaTeX parse error: Expected 'EOF', got '\d' at position 17: … //url  18、/^(\̲d̲{2}|\d{4})-((0(…/   //  年-月-日 
19、/^((0([1-9]{1}))|(1[1|2]))/((0-2)|(3[0|1]))/(d{2}|d{4})/  //// 20([w.]+)@(([[09]1,3.[09]1,3.[09]1,3.)(([w]+.)+))([azAZ]2,4[09]1,3)(]?)/   // 月/日/年  20、“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)”   //Email 
21、/^((+?[0-9]{2,4}-[0-9]{3,4}-)|([0-9]{3,4}-))?([0-9]{7,8})(-[0-9]+)?$/     //电话号码


  1. A-Za-z ↩︎

  2. a-z ↩︎

  3. a-zA-z ↩︎

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
  • 2021-12-18
  • 2022-01-05
  • 2021-11-12
猜你喜欢
  • 2021-05-01
  • 2021-11-14
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
相关资源
相似解决方案