特殊字符

#

注释. 行首以#(#!是个例外)开头是注释.

;

命令分隔符. 可以在同一行上写两个或两个以上的命令.

;;

终止case选项

.

"点"命令. 等价于source命令. 这是一个bash的内建命令.

"点"作为文件名的一部分. 如果点放在文件名的开头的话, 那么这个文件将会成为"隐藏"文件.

如果作为目录名的话, 一个单独的点代表当前的工作目录, 而两个点表示上一级目录.

"点"字符匹配. 当用作匹配字符的作用时, 通常都是作为正则表达式的一部分来使用, "点"用来匹配任何的单个字符.

"

部分引用. "STRING" 将会阻止(解释) STRING 中大部分特殊的字符.

'

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

,

逗号操作符. 逗号操作符链接了一系列的算术操作. 虽然里边所有的内容都被运行了,但只有最后一项被返回.

\

转义符. 一种对单字符的引用机制.

\X 将会"转义"字符 X . 这等价于 "X" , 也等价于'X' . \通常用来转义"和', 这样双引号和但引号就不会被解释成特殊含义了.

`

命令替换. `command`结构可以将命令的输出赋值到一个变量中去. 

:

空命令. 等价于"NOP" ( no op , 一个什么也不干的命令). 也可以被认为与shell的内建命令true作用相同. ":"命令是一个bash的内建命令, 它的退出码(exitstatus)是"true"(0).

:
echo $?      #0

死循环:

while :
do
    operation-1
    operation-2
    ...
    operation-n
done
# 与下边相同:
#while true
#do
#    ...
#done

在if/then中的占位符:

if condition
then :			# 什么都不做,引出分支.
else
    take-some-action
fi

!

取反操作符. !操作符将会反转命令的退出码的结果. 也会反转测试操作符的意义.!操作符是Bash的关键字.

*

通配符. *可以用来做文件名匹配(专有名词globbing)的"通配符".含义是, 可以用来匹配给定目录下的任何文件名.

*也可以用在正则表达式中, 用来匹配任意个数(包含0个)的字符.

测试操作符. 在一个特定的表达式中, ?用来测试一个条件的结果

$

变量替换(引用变量的内容).

${}

参数替换.

$*,$@

位置参数.

$?

退出状态码变量. $? 变量 保存了一个命令, 一个函数, 或者是脚本本身的退出状态码.

$$

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

()

命令组.

初始化数组

Array=(element1 element2 element3)

{xxx,yyy,zzz,...}

大括号扩展.

cat {file1,file2,file3} > combined_file			# 把file1, file2, file3连接在一起, 并且重定向到combined_file中.
cp file22.{txt,backup}					# 拷贝"file22.txt"到"file22.backup"中

 一个命令可能会对大括号中的以逗号分割的文件列表起作用. (通配(globbing))将对大括号中的文件名做扩展.*在大括号中, 不允许有空白, 除非这个空白被引用或转义.

Array[1]=slot_1
echo ${Array[1]}

[ ]

条件测试

[[ ]]

测试.

(( ))

整数扩展.扩展并计算在(( ))中的整数表达式.

>, &>, >&, >>, <. <>

重定向.

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

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

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

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

<<

用在here document中的重定向.

<<<

用在here string中的重定向.

<, >

ASCII comparison.

\<, \>

正则表达式中的单词边界 .

|

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

cat $filename1 $filename2 | grep $search_word

>|

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

||

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

&

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

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

-

选项, 前缀. 在所有的命令内如果想使用选项参数的话,前边都要加上"-"

=

等号. 赋值操作

~

home目录[波浪号, 即~]. 相当于$HOME内部变量.

~+

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

~-

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

=~

正则表达式匹配. 

^

行首. 在正则表达式中, "^"表示定位到文本行的行首.

*

算术操作符. *号表示乘法运算.如果要做求幂运算, 使用**, 这是求幂操作符.

?

通配符. ?在通配(globbing)中, 用来做匹配单个字符的"通配符", 在正则表达式中, 也是用来表示一个字符.

$

在一个变量前面加上$用来引用这个变量的值 .

$

行结束符. 在正则表达式中, "$"表示行结束符.

()

在 括号 中的命令列表, 将会作为一个子shell来运行.

初始化数组.

{} \;

路径名. 一般都在find命令中使用. 这不是一个shell内建命令.

";"用来结束find命令序列的 -exec 选项. 它需要被保护以防止被shell所解释.

|

管道是进程间通讯的一个典型办法, 将一个进程的 stdout 放到另一个进程的 stdin 中. 标准的方法是将一个一般命令的输出, 比如cat或者echo, 传递到一个 "过滤命令"(在这个过滤命令中将处理输入)中, 然后得到结果.

&&

用于重定向 stdin 或 stdout .



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值