Linux命令-通配符、bash环境特殊字符、正则表达式
在Linux命令中,通配符与正则表达式是有区别的
通配符
通配符用于文件名的匹配,是完全匹配,它是由shell解析的,比如find,ls,cp,mv等这些命令不能使用正则表达式,只能够使用shell自己的通配符进行匹配,常用通配符:
在使用 * 和 ?等通配符时首先发生的是 shell 的展开。Bash 会扫描命令行中的每一个单词,如果在其中发现了 *, ? 或者是 [,那么这个单词就被认为是一个模式。然后用匹配的以字母序排列的文件名称列表替换这个模式。说简单点,在 ls 命令执行前,Bash 会进行模式匹配并进行替换。然后 ls 使用替换后的参数执行命令,例如执行
ls test*
如果当前目录中有一个名为 test 的目录和一个名为 testsql 的目录,那么 Bash 替换完成后命令是这个样子:
ls test testsql (通配符执行过程参考博客:https://www.imooc.com/article/26297通配符部分)
bash环境特殊字符
# 注释符号
| 管道(pipe),分隔两个管道命令的界定
; 连续命令执行分隔符,连续命令的界定
$ 使用变量前导符,即使变量之前需要加的变量替代值,$()
& 将程序或者脚本放到后台执行
/ 目录符号,路径分隔的符号
>,>> 数据流重定向,输出导向,分别是替换和累加
<,<< 数据流重定向,输入导向
() 中间为子shell的起始与结束
{} 中间为命令块的组合
'' 单引号,不具有变量替换的功能
"" 双引号,具有变量替换的功能
\ 转义符号,将特殊字符或通配符还原成一般字符
正则表达式(参考:https://www.cnblogs.com/linyfeng/p/7353693.html)
正则表达式是用来匹配字符串的,针对文件内容的文本过滤工具里,大都用到正则表达式,如vi,grep,awk,sed等,分为基础正则表达式、扩展正则表达式
基础正则表达式:
扩展正则表达式:
https://blog.****.net/swjtuwyp/article/details/51817472
https://www.cnblogs.com/pulp/p/9742291.html