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