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

bash 脚本学习笔记

2006-07-17 21:40 357 查看
通常在/etc目录下面有大量的脚本文件,随时可以参考、学习

1、搜索含有某个指令的脚本:find /etc 2>/dev/null | xargs grep 'awk ' 2>/dev/null

说明:

find /etc 查找/etc 目录下的所有文件,并显示文件名

2>/dev/null 把所有的错误信息,如权限错误,不能访问等等 重定向倒看不到的虚拟设备,只显示有用信息。(1代表“标准输出”,2代表“标准错误输出”)

| 把前一个命令的输出以管道的方式传给后面的命令

xargs 对输入的每一个参数,循环执行后面的命令

grep 'awk' 在指定文件中查找字符串,这里的输入文件时xargs命令传过来的,每次去一个find输出的文件名

2、正则替换sed:

sed -i 's/regExp1/replaceExp/g' file     -i 代表直接替换文件中的内容    前面的s代表搜索替换,后面的g代表替换所有,三个 / 可以用任意字符替换,比如 sed 's@regExp1@replaceExp@g' file 或 sed 's#regExp1#replaceExp#g' file ,即使不要后面的g(只替换第一个找到的内容),最后一个特殊符号也不能省掉。

在替换表达式中可以使用 /1 这样的特殊参数来替代前面正则表达式中匹配的部分内容,例如:sed -n 's/.*/(movie_Play.asp?Id=[0-9]/+/).*/http:////www.kankan.com///1/p'   这里最后一个p把内容显示到屏幕上

进行多次处理,以简化表达式:grep "Id=[0-9]/+.*img" movie_list.htm | sed -n 's/.*/(movie_Play.asp?Id=[0-9]/+/).*/http:////www.kankan.com///1/p'

还有awk cut 等命令可以完成相似的功能,参见/etc 下的相应代码 以及 info awk , info cut

3、bash 脚本中的 流程控制:

if [[ ! -d /var/run/nscd ]] ; then
    mkdir -p /var/run/nscd
    chmod 755 /var/run/nscd
fi

for entry in $entries ; do
    echo $entry
done

case $entry in
    nisplus*)
        echo "case nisplus"
    *)
        echo "default"
;;
esac

注意case语句中倒数第二行的两个分号是必需的

4、查看命令的位置,察看文件的类型

which which   察看命令文件的位置,这个是一个单独的文件

type type   察看命令文件的位置,这个是bash内置命令

file /dev/null   察看文件的格式信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息