linux初学者经常会对命令行的通配符和正则表达式的特殊符号混淆.
通配符
*,代表0到无穷多个任意字符,
实例:
ls /*
?,代表一定有一个任意字符
实例:
ls /???
根目录下正好三个字符的文件名
[],代表一定有一个中括号内的字符,记住是一个
实例:
ls /*[a]*
[-],代表一个区间的所有数字,例如[0-9]
实例:
ls /etc/*[0-9]*
etc目录下文件名含有数字的文件或目录
[^],反选,和[]相反,指不包含[]里面的字符即可,例如[^0-9]指一定有一个字符,但不包含数字
实例:
ls /etc/*[^0-9]*
etc目录下文件名不包含数字的文件或目录
特殊符号
#,注释符号
\,转义符,可以把特殊字符和通配符还原成一般字符
|,管道符号,用于把两个命令的前执行结果进行重导向
;连续命令执行分隔符,例如ls; echo $PATH,可以同时执行两个命令,并且输出两个的执行结果
~,用户主目录,cd ~就能回到用户的主目录
$,变量前导符
!,逻辑非的意思
/,路径分隔符
>,数据流输出,覆盖式
>>,数据流输出,叠加式,在原有文件的末尾继续添加
<,数据流输入
<<,数据流输入
'',单引号,多个字符中间有空格是一用单引号当做一个整体,不具有保留变量能力
"",双引号,多个字符中间有空格是一用单引号当做一个整体,具有保留变量能力
``,反引号,中间的命令先执行,和$()相同