1、通配符
通配符
作用
?
匹配任意一个字符;
*
匹配0个或任意多个字符(即可以匹配任何内容);
[]
匹配中括号里任意一个字符。例如:[abc]表示匹配abc中任意一个字符;
[-]
匹配中括号里任意一个字符,-代表一个范围。例如:[a-z]表示匹配任意一个小写字母;[0-9]表示匹配任意一个数字;
[^]
逻辑非,表示匹配非中括号内的一个字符。例如:[^0- 9]代表匹配任意一个不是数字的字符;
按照下方顺序执行命令,将tmp目录下面的文件清空后,创建文件123、1abc、xabc、abc、abcd。
cd /tmp/
rm -rf *
touch 123
touch 1abc
touch xabc
touch abc
touch abcd
1.1、*通配符
执行命令:ls *abc,匹配任意0个或多个字符,然后以abc结尾的。匹配结果,如下图所示:
1.2、?通配符
执行命令:ls ?abc,匹配任意1个字符,然后以abc结尾的。匹配结果,如下图所示:
1.3、[-]通配符
执行命令:ls [0-9]*,匹配以数字开头的。匹配结果,如下图所示:
1.4、[^]通配符
执行命令:ls [^0-9]*,匹配以非数字开头的。匹配结果,如下图所示:
2、bash中特殊符号
符号
作用
''
单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义。
""
双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`” 和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。
``
反引号。反引号括起来的内容是系统命令,在bash中会先执行它。 和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。
$()
和反引号作用一样,用来引用系统命令。
#
在shell脚本中,#开头的行代表注释(除首行#!/bin/bash以外,这是固定格式)。
$
用于调用变量的值,如需要调用变量name的值时,需要用$name 的方式得到变量的值。
\
转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用。
2.1、反引号与$()
执行命令:ls、echo `ls`、echo $(ls)。
三个命令执行结果都一样,如下图所示:
2.2、单引号与双引号
定义变量name,给name赋值zhoujielun。然后分别调用命令echo '$name' 和 echo "$name"。输出结果如下图所示:
单引号直接将引号内部的信息输出来了。双引号是输出了变量name的值。
注意:如果调用 echo '$name" 或 echo "$name' ,并非完整的一个单引号或双引号。这种情况下执行命令,会要求你输入命令一直到匹配到完整的引号为止。