literal和meta的意义和用法

* literal:也就是普通纯文本,对 shell 来说没特殊功能。
* meta
:对 shell 来说,具有特定功能的特殊保留字符。

(注一:关于 bash shell 在处理 command line 时的顺序说明,
请参考 O'Reilly 出版社之 Learning the Bash Shell, 2nd Edition,第 177 - 180 页的说明,.


Literal 

没甚么好谈的,凡举  abcd123456 这些 "文字 "都是  literal ... 

  meta 却常使我们困惑..... (confused?)
事实上,前两章我们在 command line 中已碰到两个机乎每次都会碰到的 meta .

* IFS:由 <space>  <tab>  <enter> 三者之一组成(我们常用 space )(该文来自net百科:www.csustnet.com)
* CR
:由 <enter> 产生。
IFS 
是用来拆解 command line 的每一个词(word)用的,因为 shell command line 是按词来处理的。(该文来自net百科:www.csustnet.com)
 CR 则是用来结束 command line 用的,这也是为何我们敲 <enter> 命令就会跑的原因。
除了 IFS  CR ,常用的 meta 还有:...

 

= : 设定变量。
: 作变量或运算替换(请不要与 shell prompt 搞混了)
:重导向 stdout..

 


< :重导向  stdin
|
:命令管线。
:重导向  file descriptor ,或将命令置于背境执行。
 

( )
:将其内的命令置于  nested subshell 执行,或用于运算或命令替换。
{ }
:将其内的命令置于  non-named function 中执行,或用在变量替换的界定范围。 (该文来自net百科:www.csustnet.com)
:在前一个命令结束时,而忽略其返回值,继续执行下一个命令。
&& 
:在前一个命令结束时,若返回值为  true,继续执行下一个命令。 (该文来自net百科:www.csustnet.com)
|| 
:在前一个命令结束时,若返回值为  false,继续执行下一个命令。
!
:执行  history 列表中的命令
....

 


假如我们需要在  command line 中将这些保留字符的功能关闭的话,就需要  quoting 处理了。
 bash 中,常用的  quoting 有如下三种方法:
 

* hard quote
' ' (单引号 ),凡在  hard quote 中的所有  meta 均被关闭。
* soft quote
 " " (双引号 ),在  soft quoe 中大部份  meta 都会被关闭,但某些则保留 ( $ )(注二 )  
 


* escape 

 \ (反斜杠 ),只有紧接在  escape (跳脱字符 )之后的单一  meta 才被关闭。

 

注二:在 soft quote 中被豁免的具体 meta 清单,我不完全知道,
有待大家补充,或透过实作来发现及理解。 )  

 

参考资料: http://www.csustnet.com/index.php?doc-view-116.html

 

 

你可能感兴趣的:(变量,meta,转义符,Literal,保留字符)