shell 中常见的控制字符和特殊字符总结


控制字符

   修改终端或文本显示的行为.控制字符以CONTROL + key这种方式进行组合(同时按下). 控制字符也可以使用8进制或16进制表示法来进行表示, 但是前边必须要加上转义符.控制字符在脚本中不能正常使用.

Ctl-B

   退格(非破坏性的), 就是退格但是不删掉前面的字符.

Ctl-C

   break. 终结一个前台作业.

Ctl-D

   从一个shell中登出(与exit很相像).在console或者在xterm窗口中输入的时候, Ctl-D将删除光标下字符. 当没有字符时, Ctl-D将退出当前会话, 在一个xterm窗口中, 则会产生关闭此窗口的效果

Ctl-G

   "哔" (beep). 在一些老式的打字机终端上, 它会响一下铃.

Ctl-H

   "退格"(破坏性的), 就是在退格之后, 还要删掉前边的字符.

Ctl-K

   垂直制表符.

   当在console或者xterm窗口中输入文本时, Ctl-K将会删除从光标所在处到行尾的全部字符. 在脚本中, Ctl-K的行为有些不同, 具体请参见下边的Lee Maschmeyer的例子程序.

Ctl-L

   清屏(清除终端的屏幕显示). 在终端中, 与clear命令的效果相同.

Ctl-M

   回车.

Ctl-Q

   恢复(XON).在一个终端中恢复stdin.

Ctl-S

   挂起(XOFF).在一个终端中冻结stdin. (使用Ctl-Q可以恢复输入.)

Ctl-U

   删除光标到行首的所有字符. 在某些设置下, 不管光标的所在位置Ctl-U都将删除整行输入.

Ctl-W

   当在控制台或一个xterm窗口敲入文本时, Ctl-W将会删除当前光标到左边最近一个空格间的全部字符. 在某些设置下, Ctl-W将会删除当前光标到左边第一个非字母或数字之间的全部字符.

Ctl-Z

   暂停前台作业.




特殊字符

$$

   进程ID变量. 这个$$ 变量 保存了它所在脚本的进程 ID

"

   部分引用[双引号, 即"]. "STRING"将会阻止(解释)STRING中大部分特殊的字符.

'

   全引用[单引号, 即']. 'STRING'将会阻止STRING中所有特殊字符的解释. 这是一种比使用"更强烈的形式.

()

   可用于初始化数组:Array=(element1 element2 element3)

{}

   cat {file1,file2,file3} > combined_file把file1, file2, file3连接在一起, 并且重定向到combined_file中.

{} \;

   路径名. 一般都在find命令中使用. 这不是一个shell内建命令.";"用来结束find命令序列的-exec选项. 它需要被保护以防止被shell所解释.

[ ]

   条件测试.条件测试表达式放在[ ]中.

   数组元素.在一个array结构的上下文中, 中括号用来引用数组中每个元素的编号.

   字符范围.用作正则表达式的一部分, 方括号描述一个匹配的字符范围.

` `

   测试.测试表达式放在` `中.

> &> >& >> < <>

   重定向.

   scriptname >filename     重定向scriptname的输出到文件filename中. 如果filename存在的话, 那么将会被覆盖.

   command &>filename     重定向command的stdout和stderr到filename中.

   command >&2     重定向command的stdout到stderr中.

   scriptname >>filename     将scriptname的输出追加到文件filename中. 如果filename不存在的话,将会被创建.

   [i]<>filename 打开文件filename用来读写, 并且分配文件描述符i给这个文件. 如果filename不存在, 这个文件将会被创建.

\<, \>

   正则表达式中的单词边界 .bash$ grep '\<the\>' textfile

|

   管道. 分析前边命令的输出, 并将输出作为后边命令的输入. 这是一种产生命令链的好方法.

>|

   强制重定向(即使设置了noclobber选项 -- 就是-C选项). 这将强制的覆盖一个现存文件.

||

   或-逻辑操作. 在一个条件测试结构中, 如果条件测试结构两边中的任意一边结果为true的话,||操作就会返回0(代表执行成功).

&

   后台运行命令. 一个命令后边跟一个& 表示在后台运行.

&&

   与-逻辑操作. 在一个条件测试结构中, 只有在条件测试结构的两边结果都为true的时候, &&操作才会返回0(代表sucess).

~

   home目录[波浪号, 即~]. 相当于$HOME内部变量. ~bozo是bozo的home目录, 并且ls ~bozo将列出其中的内容. ~/就是当前用户的home目录, 并且ls ~/将列出其中的内容.

~+

   当前工作目录. 相当于$PWD内部变量.

~-

   先前的工作目录. 相当于$OLDPWD内部变量.