shell中的输入的字符分为纯字符和元字符(特殊意义的字符 meta)
元字符:
IFS:由 <space> 或 <tab> 或 <enter> 三者之一组成(我们常用 space )。
CR:由 <enter> 产生。
=:设定变量。
$:作变量或运算替换(请不要与 shell prompt 搞混了)。
>:重导向 stdout。
<:重导向 stdin。
|:命令管线。
&:重导向 file descriptor ,或将命令置于背境执行。 *
( ):将其内的命令置于 nested subshell 执行,或用于运算或命令替换。 *
{ }:将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围。
;:在前一个命令结束时,而忽略其返回值,继续执行下一个命令。 *
&&:在前一个命令结束时,若返回值为 true,继续执行下一个命令。 *
||:在前一个命令结束时,若返回值为 false,继续执行下一个命令。 *
!:执行 history 列表中的命令
单双引号区别:
“ ”:关闭引号中的元字符的特殊意义,但不包括$等一些特殊的。
例如:
1、这个命令中就把 >这个重定向的特殊字符的功能关闭了。
1: [root@client ~]# echo " > new "
2: > new
2、这个例子中双引号的中的$元字符意义还是继续保留,没有被关闭
1: [root@client ~]# A=B
2: [root@client ~]# echo $A
3: B
4: [root@client ~]# echo "$A"
5: B
‘ ’:关闭引号所有的元字符特殊意义。
例如:单引号中所有的元字符都会被关闭其特殊意义
1: [root@client ~]# A=B
2: [root@client ~]# echo $A
3: B
4: [root@client ~]# echo '$A'
5: $A
\ :紧跟跳脱字符后的单一元字符会被转义为纯字符,也就是后面单一元字符被关闭特殊意义。
例如:引用上面双引号中第二个例子,用\字符也可以把跟在\之后的单一元字符关闭其特殊意义。
1: [root@client ~]# A=B
2: [root@client ~]# echo $A
3: B
4: [root@client ~]# echo "$A"
5: B
6: [root@client ~]# echo "\$A"
7: $A