一,shell的概述
操作系统其实是一组软件,这组软件控制整个硬件与管理系统的活动监测。如果这组软件可以被用户随意操作将很不安全。所以就需要用户通过应用程序来指挥内核,让内核完成我们所需的硬件任务,这个应用程序就是shell。我们必须通过shell将我们输入的命令与内核通信。好让内核可以控制硬件来正确无误的工作。我们常用的shell有以下几种
vim /etc/shells
我们主要学习的是/bin/bash这个linux默认的shell
二,脚本的编写执行以及调试
1,第一行应该写#!/bin/bash 脚本声明,用来告诉系统使用哪种解释器来执行程序。
后面写脚本的可执行语句。
2,脚本的执行
第一种方法:可以使用 sh + 脚本文件
第二种方法:也可以给脚本文件执行权限,然后直接写绝对路径来执行。使用的是第一行脚本声明中的解释器。
3,脚本的调试
[root@foundation200 mnt]# sh -x file1.sh
+ echo hello :命令行
hello :执行结果
4,自动添加脚本信息说明。
autocmd BufNewFile *.sh exec ":call WESTOS()"
新建的以“.sh”结尾的文件都执行函数WESTOS的功能
"map <F4> ms:call WESTOS()<cr>'s
按F4执行函数WESTOS的功能
测试,建立以.sh结尾的文件
三,简单脚本练习
运行脚本显示当前主机的ip
运行脚本
运行脚本显示当前主机可以登录的用户
运行脚本
四,写脚本时常用到的一些命令
1,diff:比较文件的差异
对比两个不同的文件
生成补丁文件
打补丁,首先下载服务
安装补丁软件patch,
2,cut按列用于截取字符
cut参数
cut -d :指定分隔符
cut -f 1 :指定截取每行第一列
cut -c 3 :截取每行第三个字符
用cut编辑脚本,找出系统中可以登录的用户
2,sort 字符排列
sort 参数
-n :纯数字排序
-r :倒叙
-u :去掉重复的数字
-t :指定分隔符
-o :输出到指定文件中
-k :指定要排序的列
测试
对/mnt下的文件进行排序找出最大的两个
3,uniq : 对重复字符的处理
uniq -u 显示唯一的行
uniq -d 显示重复的行
uniq -c 每行显示的次数
创建文件
一般uniq和sort一起使用
显示唯一的行
显示每行重复的次数
显示重复的行
&& 和 ||
&&条件成立后执行的命令
|| 条件不成立后执行的命令
"[ ]"用来判断条件是否成立
常见的字符串比较
= :比较字符串的内容是否相同
!= :比较字符串的内容是否不同
-z : 判断字符串内容是否为空
-n : 文件是否不为空
文件类型的判断
-e : 文件是否存在
-d :是否为目录
-L :是否为连接文件
-f :是否为正常类型的文件
-c :是否为字符设备
-b:是否为块设备文件
-S:是否为套接子设备
判断文件节点是否一样,
建立文件,查看节点,创建硬链接
编写脚本判断文件类型
4,tr :转换字符
5,find 查找文件(可以用man取查找find的用法)
-group : 查找组
-type : 查找类型
-user : 查找用户
-not -group 查找不是改组的文件
-perm 777 : 精确匹配权限为777的文件
-perm : -644 匹配u=6,g=4,o=4 的文件
-perm : /666 匹配u=6,或g=6,或o=6的文件
-size 20K : 精确查找大小为20K的文件
-size +20K : 精确查找大于20K的文件
-size -20K : 精确查找大于20K的文件
-maxdepth 1 -name passwd :查找目录的深度为一层
-mindepth 2 -name passwd : 查找目录的深度最小为两层