# 注释,行首以#开头为注释(#!是个例外,echo 命令中被转义的#是不能作为注释的.同样的,#也可以出现在特定的参数替换结构中或者是数字常量表达式中.)
; 命令分隔符,可以用来在一行中来写多个命令.
;; 终止"case"选项.
. . 命令等价于source 命令.这是一个bash 的内建命令(. .作为文件名的一部分.如果作为文件名的前缀的话,那么这个文件将成为隐藏文件.将不被ls 命令列出.)
. 命令如果作为目录名的一部分的话,那么.表达的是当前目录.".."表示上一级目录.(.命令经常作为一个文件移动命令的目的地.)
. .字符匹配,这是作为正则表达是的一部分,用来匹配任何的单个字符.
" 部分引用."STRING"阻止了一部分特殊字符
' 全引用. 'STRING' 阻止了全部特殊字符
, 逗号链接了一系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被
返回.
/ 转义字符
/ 文件名路径分隔符.或用来做除法操作.
` 后置引用,命令替换
: 空命令,等价于"NOP"(no op,一个什么也不干的命令).也可以被认为与shell 的内建命令":"命令是一个bash 的内建命令,它的返回值为0,就是shell 返回的true.在if/then 中的占位符, 什么都不做,引出分支. 在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度
! 取反操作符,将反转"退出状态"结果,
* 万能匹配字符,用于文件名匹配(这个东西有个专有名词叫file globbing),或者是正则
表达式中.注意:在正则表达式匹配中的作用和在文件名匹配中的作用是不同的.
* 数学乘法.
** 是幂运算.
? 测试操作.在一个确定的表达式中,用?来测试结果.
? 在file globbing 中和在正则表达式中一样匹配任意的单个字符.
$ 变量替换
$ 在正则表达式中作为行结束符.
${} 参数替换
$*,$@ 位置参数
$? 退出状态变量.$?保存一个命令/一个函数或者脚本本身的退出状态.
$$ 进程ID 变量.这个$$变量保存运行脚本进程ID
() 命令组
{} 代码块.又被称为内部组.事实上,这个结构创建了一个匿名的函数.但是与函数不同的
是,在其中声明的变量,对于脚本其他部分的代码来说还是可见的
{} /; 路径名.一般都在find 命令中使用.这不是一个shell 内建命令.
[]
test.test的表达式将在[]中.值得注意的是[是shell 内建test 命令的一部分,并不是/usr/bin/test 中的扩展命令的一个连接.
[[]] test. test表达式放在[[]]中.(shell 关键字)
[]
数组元素
[]
字符范围,在正则表达式中使用,作为字符匹配的一个范围
(()) 数学计算的扩展
> &> >& >>
重定向.
scriptname >filename 重定向脚本的输出到文件中.覆盖文件原有内容.
command &>filename 重定向stdout 和stderr 到文件中
command >&2 重定向command 的stdout 到stderr
scriptname >>filename 重定向脚本的输出到文件中.添加到文件尾端,如果没有文件,
则创建这个文件.
<和> 可用来做字符串比较
<和> 可用在数学计算比较
<,> ASCII 比较
/<,/> 正则表达式中的单词边界.
|
管道.分析前边命令的输出,并将输出作为后边命令的输入.这是一种产生命令链的
好方法.
>| 强制重定向(即使设置了noclobber 选项--就是-C 选项).这将强制的覆盖一个现存文件.
|| 或-逻辑操作.
& 后台运行命令.一个命令后边跟一个&,将表示在后台运行.
&& 与-逻辑操作.
-
选项,前缀.在所有的命令内如果想使用选项参数的话,前边都要加上"-".
-
之前工作的目录."cd -"将回到之前的工作目录,具体请参考"$OLDPWD"环境变量.
-
算术减号.
=
算术等号,有时也用来比较字符串.
+ 算术加号,也用在正则表达式中.
+ 选项,对于特定的命令来说使用"+"来打开特定的选项,用"-"来关闭特定的选项.
% 算术取模运算.也用在正则表达式中.
~ home 目录.相当于$HOME 变量.
~+ 当前工作目录,相当于$PWD 变量.
~- 之前的工作目录,相当于$OLDPWD 内部变量.
=~ 用于正则表达式,这个操作将在正则表达式匹配部分讲解,只有version3 才支持.
^ 行首,正则表达式中表示行首."^"定位到行首.