首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

shell学习笔记(一)

作者:  时间: 2010-12-04
脚本第一行的#!
   由于系统拥有好几个shell,因此需要通过一种方式告知UNIX内核应该以哪个shell来执行指定的shell脚本。指定方法是,通过脚本文件中特殊的第一行来设置,如:#!/bin/bash。

重定向

    <: 改变标准输入
   >: 改变标准输出,如果存在同名文件则覆盖,不存在则创建
   tr -d 'a' < tmp1.txt > tmp2.txt,  此命令表示用tmp1作为输入执行tr -d命令并将结果输出到tmp2中。
   >>: 作用同>,但其不会覆盖同名文件而是追加。
   |:管道连接符,可将不同的命令连接起来。

Shell脚本参数
   shell脚本的命令行参数都是由整数命名,当它超过9,就应该用大括号把数字框起来。例:

#!/bin/bash
echo first arg is $1
echo tenth arg is ${10}

    如需要调试脚本,可在#!/bin/bash后加上 -x/+x来打开/关闭跟踪功能。


正则表达式
   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次;\{,m\}指重现n至m次。n,m的值必须介于0-255。