通常在/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
fifor entry in $entries ; do
echo $entry
donecase $entry in
nisplus*)echo "case nisplus"
*)echo "default"
;;
esac
注意case语句中倒数第二行的两个分号是必需的
4、查看命令的位置,察看文件的类型
-
which which 察看命令文件的位置,这个是一个单独的文件
-
type type 察看命令文件的位置,这个是bash内置命令
-
file /dev/null 察看文件的格式信息