shell学习笔记(一)
时间:2010-12-04 来源:chennrui
脚本第一行的#!
由于系统拥有好几个shell,因此需要通过一种方式告知UNIX内核应该以哪个shell来执行指定的shell脚本。指定方法是,通过脚本文件中特殊的第一行来设置,如:#!/bin/bash。
重定向
<: 改变标准输入
>: 改变标准输出,如果存在同名文件则覆盖,不存在则创建
tr -d 'a' < tmp1.txt > tmp2.txt, 此命令表示用tmp1作为输入执行tr -d命令并将结果输出到tmp2中。
>>: 作用同>,但其不会覆盖同名文件而是追加。
|:管道连接符,可将不同的命令连接起来。
Shell脚本参数
shell脚本的命令行参数都是由整数命名,当它超过9,就应该用大括号把数字框起来。例:
如需要调试脚本,可在#!/bin/bash后加上 -x/+x来打开/关闭跟踪功能。
正则表达式
metacharacter:
由于系统拥有好几个shell,因此需要通过一种方式告知UNIX内核应该以哪个shell来执行指定的shell脚本。指定方法是,通过脚本文件中特殊的第一行来设置,如:#!/bin/bash。
重定向
<: 改变标准输入
>: 改变标准输出,如果存在同名文件则覆盖,不存在则创建
tr -d 'a' < tmp1.txt > tmp2.txt, 此命令表示用tmp1作为输入执行tr -d命令并将结果输出到tmp2中。
>>: 作用同>,但其不会覆盖同名文件而是追加。
|:管道连接符,可将不同的命令连接起来。
Shell脚本参数
shell脚本的命令行参数都是由整数命名,当它超过9,就应该用大括号把数字框起来。例:
#!/bin/bash |
正则表达式
metacharacter:
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 ^ 匹配输入字符串的开始位置。 $ 匹配输入字符串的结束位置。 * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 \(\) 将\(与\)间的模式存储在保留空间。最多可将9个独立的子模式存储在单个模式中。匹配于子模式的文本,可通过转义序列\1至\9被重复使用在相同模式里。例如,\(ab\)\(cd\)*\2\1,表示abcd*cdab。 \(["']\).*\1,表示""和''。 \{n,m\} 区间表达式,匹配在它前面的单个字符重现的次数区间。\{n\}指重现n次;\{n,\}指至少重现n次;\{n,m\}指重现n至m次。n,m的值必须介于0-255。 |
相关阅读 更多 +