shell 脚本介绍
- shell是一种脚本语言 aming_linux blog.lishiming.net
- 可以使用逻辑判断、循环等语法
- 可以自定义函数
- shell是系统命令的集合
- shell脚本可以实现自动化运维,能大大增加我们的运维效率
下面介绍几种常用的shell命令。
1. diff
对比两个文件的不同。
用法:diff [options] files | directorys
编写两个文件:
1.vimdiff
可以直接出现两个文件的内容,并提示出不同的内容,方便我们进行更改。
2.diff westos westos.new
lee 表示.new文件多的内容,westos文件加上westos.new文件中的lee就一样了。
表示westos.new文件删除lee这一行就一样了。
c表示更改。
输出信息:
[num1,num2] [a|c|d] [num3,num4]
num1,num2 ##第一个文件中的行
a ##添加
c ##更改
d ##删除
< ##第一个文件中的内容
> ##第二个文件中的内容
num3,num4 ##第二个文件中的行
常用参数:
-b ##忽略空格
当有空格时,不会忽略,加上-b就忽略了。
-B ##忽略空行
-i ##忽略大小写
-c ##显示文件所有内容并标示不同
-r ##对比目录
mkdir 1 2 两个目录,给1下建立file1文件
-u ##合并输出
表示westos文件删除Linux加上linux就一样了。
以后面的文件(westos.new)为模板进行更改。
2. patch
将两个文件的不同导入到另外一个文件,这个文件就叫做补丁,贴到我们想要更改的文件,就会更新文件内容,这样的方式会更快的修补文件。
yum install patch -y 安装补丁功能
用法:
patch 原文件 补丁文件
-b ##备份原文件
. orig 就是备份的源文件。
3. cut
cut 命令主要用来截取数据
-d : ##指定:为分隔符
-f ##指定显示的列 5第五列| 3,5 3和5列|3-5 3到5列|5- 第五列以后|-5 到第五列
以:为分隔符,显示/etc/passwd 的第一列。
1,7意思为第一和第七列。
-c ##指定截取的字符(数字用法同-f)
1,4第一和第四个字符,1-4第一到4个字符。
第五列到最后。
4. sort
-n ##纯数字排序
-r ##倒叙
-u ##去掉重复
-o ##输出到指定文件
当文件有很多列时:
-t ##指定分隔符
-k ##指定排序的列
第二列进行了排序。
5. uniq
-c #合并重复并统计重复个数
3个2,2个12,2个78
-d #显示重复的行
-u #显示唯一的行
6. tr
tr ‘a-z’ ‘A-Z’ ##小写转大写
tr ‘A-Z’ ‘a-z’ ##大写转小写
7. test 对比命令
测试当a的值=b的值时输出yes,否则输出no。
test = [ ] ## [ ] 就相当于test命令
"test $a = $b" = [ "$a" = "$b" ]
test数字对比
=
!=
-eq ##等于
-ne ##不等于
-le ##小于等于
-lt ##小于
-ge ##大于等于
-gt ##大于
!表示括号内的条件不成立的时候。
test的条件关系
-a ##并且
表示当 a 大于 0 并且小于 10 时输出 yes 。
-o ##或者
当两个条件都不成立的时候输出no
test对空的判定
-n ##nozero 判定内容不为空
当判定内容不为空时,输出yes,否则输出no
-z ##zero 判定内容为空
当判定内容为空时输出yes,否则输出no。
test对于文件的判定
-ef ##文件节点号是否一致(硬链接)
-nt ##文件1是不是比文件2新
-ot ##文件1是不是比文件2老
-d ##目录
判定 /mnt/ 是否为目录,是则输出yes。
-S ##套接字
-L ##软连接
ln -s 为软链接。-L检测文件是否为软链接。
-f ##普通文件
-b ##快设备
-c ##字符设备
-e ##存在
/mnt/file 存在则输出yes,不存在则输出no。
8. && ||
&& 符合条件作动作
|| 不符合条件作动作
表示如果能ping通就输出yes,不符合就输出no