Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13619
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-30 23:56
个人简介

于无声处鸭子听雷

文章分类

全部博文(5)

文章存档

2015年(3)

2014年(2)

最近访客

分类: LINUX

2015-01-01 04:56:10


一、Linux shell中常用符号


1、通配符
(Wildcard character)

字符 含义 实例
* 匹配 0 或多个字符 a*b  a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab。
? 匹配任意一个字符 a?b  a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b。
[list]  匹配 list 中的任意单一字符 a[xyz]b   a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。
[!list]  匹配 除list 中的任意单一字符 a[!0-9]b  a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b。
[c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] a[0-9]b  0与9之间必须也只能有一个字符 如a0b, a1b... a9b。
{string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串 a{abc,xyz,123}b    a与b之间只能是abc或xyz或123这三个字符串之一。

二、元字符(Meta charcter)

              字符                
说明
IFS 三者之一组成(我们常用 space )。
CR 产生。
= 设定变量。
$ 作变量或运算替换(请不要与 shell 提示符搞混了)。
> 重导向 stdout。
< 重导向 stdin。
| 命令管线。
& 重导向 file descriptor ,或将命令置于背境执行。
( ) 将其内的命令置于 nested subshell 执行,或用于运算或命令替换。
{ } 将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围。
; 在前一个命令结束时,而忽略其返回值,继续执行下一个命令。
&& 在前一个命令结束时,若返回值为 true,继续执行下一个命令。
|| 在前一个命令结束时,若返回值为 false,继续执行下一个命令。
! 执行 history 列表中的命令。


三、转义字符(Escape character)
字符 说明
‘’(单引号) 又叫硬转义,其内部所有的shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
“”(双引号) 又叫软转义,其内部只允许出现特定的shell 元字符:$用于参数代换 `用于命令代替
\(反斜杠)   又叫转义,去除其后紧跟的元字符或通配符的特殊意义。

四、一些符号的具体用法

#      —— 1、root用户操作提示符 如:root@debian:~#
                2、在脚本文件中一行的末尾,#后面的文字为本行注解说明文字  如:ls -h #-h选项可以输出方便人阅读的界面
                3、在脚本文件中一行的开头,表示此行为注解说明文字 如:#this is a free software
                4、在脚本文件命令行前,表示标识此命令行暂时不被执行 如:#deb wheezy non-free
                5、参数替换中,从头部开始扫描,#为最短匹配,##为最长匹配 如:${parameter#word}        ${parameter##word}      
               6、进制转换中的转换符 如:echo $((16#a));将十六进制数a转换为十进制数表示出来
                 7、模式匹配 如:echo ${#string};获得变量string所含字符的个数

$        —— 1、普通用户操作提示符 如:feedly@debian:~$
                  2、表示一行的终止 如:在正则表达式中
                  3、变量、参数替换  如:${parameter#word}
                  4、$1,$2,$3等等,指从命令行向脚本输入的第一个,第二个,第三个参数。$0指脚本本身
                  5、$#,指从命令行向脚本输入的参数个数
                  6、$*,指从命令行向脚本输入的所有参数,但是看成一个整体。
                  7、$@,指从命令行向脚本输入的所有参数,但是每个参数是根据IFS变量分开的
                  8、$?,退出状态变量
                  9、$$,进程的ID号码。

~         —— 1、当前会话账户的home目录

!          —— 1、
表示反逻辑,比如后面的!=,这个是表示不等于

                     2、 表示取反,如:ls a[!0-9] #表示a后面不是紧接一个数字的文件;

                     3、 在不同的环境里面,感叹号也可以出现在间接变量引用里面;

                      4、在命令行中,可以用于历史命令机制的调用,不过要注意,这点特性不能在脚本文件里面使用

%            —— 1、在算术运算中,这个是求模操作符,即两个数进行除法运算后的余数
                      2、 在参数替换中,从尾部开始扫描,%表示最长,%%表示最短。


^             —— 1、在正则表达式中,作为一行的行首位置标志
                       2、在参数替换中,^表示第一个字母大写,^^表示全部大写

&              —— 1、&&表示逻辑and
                        2、&放在命令行最后,表示将该命令放在后台执行

()               —— 1、表示命令组,()内为子shell,并且子shell的变量值对()外为不可见
                         2、用于数组的初始化

(())              —— 1、用在算数运算上,与let指令类似
                          2、表示整数扩展,与$[]类似,但不会返回其中表达式的值

[]                 —— 1、测试中,[]中为shell的判断式
                           2、在数组的上下文中,表示数组元素,方括号内填上数组元素的位置就能获得对应位置的内容

[[]]               —— 1、测试中,与[]作用相同,但[[]]中允许使用&&,||,<,>操作符

{}                  —— 1、在命令中,扩展多个参数至参数列表
                            2、表示代码块

>,>&,>>         —— 1、scriptname >filename 重定向scriptname的输出到文件filename中去,如果文件存在则覆盖
                             2、
command >&2 把command的标准输出(stdout)重定向到标准错误(stderr)中
                            
3、scriptname >>filename 重定向scriptname的输出到文件filename中去,如果文件不存在则创建






阅读(280) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~