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

《Shell 脚本学习指南》笔记

2012-11-22 16:46 218 查看
第二章 入门

2.5.5.2 特殊文件

/dev/null 传送到此的文件会被系统丢掉。此时并不关心内容,而是是否存在成功写入并退出的状态。

if grep pattern myfile>/dev/null
then
...
else
...
fi


/dev/tty 打开此文件时,会重定向到另一个终端(sonsole,serial port,pseudoterminal...)

输密码程序特别方便

printf "Enter new password: "
stty -echo //关闭自动打印输入字符的功能
read pass< /dev/tty
printf "Enter again: "
read pass2 < /dev/tty
stty echo //打开自动打印字符功能
...


2.5.6基本命令查找 $PATH

可以在.profile中加入自己的bin目录,如 PATH=$PATH:$HOME/bin

路径中的冒号(不是分隔的那些冒号): 代表查找当前文件夹

/usr/local/sbin:/usr/local/: 表示最后查找当前目录

/usr/local/sbin::/usr/local/ 中间

:/usr/local/sbin:/usr/local/ 最先找当前目录

第三章 查找与替换

POSIX字符集

[:alnum:] 数字字符[:lower:]小写字母
[:alpha:] 字母字符[:print:] 可显字符
[:blank:] 空格和tab[:punct:]标点字符
[:digit:] 数字字符[:space:] 空白字符
[:cntrl:] 控制字符[:upper:] 大写字符
[:graph:] 非空格字符[:xdigit:] 十六进制字符
后向引用ubuntu上egrep fgrep均无效果

BRE提供将字表达式包围在\(和\)里,用\digit(digit=1~9)匹配前面第几个括号中的字符。

例:1.\(ab\)\(cd\)[def]*\2\1 其可能匹配结果abcdcdab,adcddefcdad等等。

  2. \(why)\).*\1 一行中出现两个why

  3.\([[:alpha:]_][[:alnum]_]*\)=\1 可以匹配到简易的赋值语句

单个表达式多字符 (egrep 有用)

例:a\{n\} 连续n个a

  a\{n,\}至少连续n个a

  a\{n,m\}连续n到m个a

扩展正则表达式

  ?匹配0个或一个前置表达式

  +匹配一个及以上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: