您的位置:首页 > 运维架构 > Shell

shell特殊字符

2014-05-07 12:45 267 查看
# 注释,行首以#开头为注释(#!是个例外); 命令分割符,可以用来在一行中写多个命令;; 终止“case”选项. 相当于source命令,这是一个bash内建命令. 作为文件名的一部分,如果作为文件名的前缀的话,那么这个文件将成为隐藏文件. 如果作为目录名字的一部分的话,表示的是当前目录“..” 表示上一级目录. 命令经常作为一个文件移动命令的目的地. 字符匹配。这是作为正则表达式的一部,用来匹配任何的单个字符" 部分引用“STRING”阻止了一部分特殊字符‘ 全引用,'STRING'阻止了全部特殊字符, 逗号链接了一系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被返回\ 转义字符,如\X等价于“X”或者'X'/ 文件名路径分隔符或者用来做除法操作`` 后置引用,命令替换: 空命令,等价于“NOP”(no op,一个什么也不干的命令),也可以被认为与shell的内建命令(true)作用相同 “:” 命令是一个bash的内建命令,它的返回值为0,就是shell返回的true 死循环,如 while : do operation-1 operation-2 operation-3 ... operation-n done 与下面方式相同 while true do ... done 在if/then中的占位符,如: if condition then : # 什么都不做,引出分支 eles take-some-action fi "变量扩张/字串替换" 在和>结合使用时,把一个文件截断到0长度,没有修改它的权限,如果文件在之前不存在,那么就创建它。 :> date.xxx #文件“data.xxx”现在被清空了,与 cat /dev/null > data.xxx的作用相同 然而,这不会产生一个新的进程,因为“:”是一个内建命令! 取反操作符,将反转“退出状态”结果,也会反转test操作符的意义,比如修改=为!=.!操作室bash的一个关键词 在另一种上下文种,还能反转bash的“history mechanism” history mechanism(历史机制)在脚本中是被禁用的* 万能匹配字符,用于文件名匹配(这个东西有一个专有名词叫file globbing) 数学乘法 **是幂运算? 测试操作,在一个确定的表达式中,用?来测试结果 在file globbing 中和正则表达式中一样匹配任意的单个字符$ 变量替换,变量赋值前后不要有空格 ; 在正则表达式中作为行结束符$0 是脚本本身,$1是第一个参数・・・・$() 参数替换$*,$@ 所有的位置参数(不包含$0)$? 退出状态变量. $?保存一个命令/一个函数或者脚本本身的退出状态$$ 进程ID变量,这个$$变量保存运行脚本进程ID() 命令组 , 注意:在()中的命令列表,将作为一个子shell来运行,在()中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的{} 代码块,又被称为内部组,与()不同的是{}中的代码块不能正常的开启一个新的shell{}\; 路径名,一般都在find命令中使用,这不是一个shell内建命令,注意:“;”用来结束find命令序列的-exec选项[ ] test test的表达式将在[]中,值得注意的是[]是shell内建test命令的一部分,并不是/usr/bin/test 中的扩展命令的一个连接[[ ]] test test表达式放在[[]]中 .(shell关键字)[ ] 数组元素[ ] 字符范围(()) 数学计算的扩展>&>>&>>< 重定向 scriptname > filename 重定向脚本的输出到文件中,覆盖原有内容 command &> filename 重定向stdout 和 stderr 到文件中 command >&2 重定向command 的 stdout 到 stderr scriptname >> filename 重定向脚本的输出到文件中,添加到文件尾端,如果没有文件就创建文件<,> ASCII 比较\<,\> 正则表达式中的单词边界。如:grepm '\<the\>' testfile| 管道,分析前边命令的输出,并将输出作为后面命令的输入,如果管道中的某个命令产生了一个异常,并且中途失败,那么这个 管道将提前终止,这种行为被叫做a broken pipe,并且这种状态下将发送一个SIGPIPE(信号)>| 强制重定向(即使设置了noclobber选项--就是-C选项),这将强制覆盖一个现有文件|| 或-逻辑操作& 后台运行命令,一个命令后面跟一个&,将表示在后台运行 sleep 10 & [1]850 [1]+ Done sleep 10 在一个脚本中,命令和循环都可能运行在后台 注意:在一个脚本内运行后台执行一个命令,有可能造成这个脚本挂起,等待一个按键响应&& 与-逻辑操作 command1 && command2 如果1执行成功则执行2 - 选项,前缀,在所有命令内如果想使用选项参数的话,前面都要加’-‘~ home目录 ~/就相当于当前用户的home目录~+ 当前工作目录,相当于$pwd变量~- 之前的工作目录,相当于$oldpwd内部变量=~ 用于正则表达式^ 行首符空白部分 分割命令或者是变量,包括空格,tab,空行,或任何他们的组合 在一些特殊情况下,空白是不允许的,如变量赋值时,会引起语法错误 空白行在脚本中没有效果 “$IFS”,对于某些命令输出的特殊变量分割域,默认使用的是空白 如果想保留空白,使用引用换行符也被认为是空白,这也解释了为什么一个空行是空白shift shift命令重新分配位置参数,其实就是向左移动一个位置

本文出自 “empty” 博客,请务必保留此出处http://wangyongcun.blog.51cto.com/5761399/1407634
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: