shell中常用的基本命令
- shell在企业当中更多的就是对数据的采集以及对系统的监控,而不是进行开发的,因为如果用shell开发,效率太低
- 语言分为两类:描述型和解释型
1 diff
-
作用:对比两个文件有什么不同
-
用法: diff [options] files | directory
-
输出信息:
[num1,num2][a|c|d][num3,num4]
num1,num2 #第一个文件中的行
a #添加
c #更改
d #删除
< #第一个文件中的内容
> #第二个文件中的内容
num3,num4 #第二个文件中的个行 -
常用参数:
-b #忽略空格
-B #忽略空行
-i #忽略大小写
-c #显示文件所有内容并标示不同
-r #对比目录
-u #合并输出 -
示例:
-
编写两个不同的文件:
-
diff westos lxy
-
diff -u westos lxy
-
diff -c westos lxy
2 patch
首先需要安装:
dnf install patch -y
生成补丁:
diff -u westos lxy
将文件中的内容导入的file.parh中为补丁文件:
- patch 原文件 补丁文件 #原文件会消失
-b #备份原文件
3 cut
-d #指定:为分割符
-f #指定显示的列: **5**表示第五列 |3,5 表示3和5列 |3-5 表示3至5列 |5- 表示第五列之后 |-5 表示到第5列
-c #指定截取的字符(数字用法同-f)
4 sort
-n #纯数据排序
-r #倒叙
-u #去掉重复
-o #输出到指定文件
-t #指定分割符
-k #指定排序的列
示例:
- 编写一个westos文件,其中随机编辑一行数列
- sort westos #只对第一行数字进行从小到大的排序
- sort -n westos #纯数据排序
- cut -n -t ‘;’ -k 2 westos #指定纯数据分割副为;的第二列数据进行排序
5 uniq
-c #合并重复并统计重复个数
- sort -n westos | uniq -c #排序并且将重复的合并并且统计重复的个数
-d #显示重复的行
-u #显示唯一的行
- 练习:
- (1) ifconfig 网卡 可以显示此网卡的信息
显示信息中包含此网卡使用的ip地址
请用命令过滤此ip并在输出时只显示ip,其他信息不显示
- (2)找出能登陆系统用户中UID最大的用户,并显示其名称
- (3)当前主机为web服务器,请抓取访问web服务器次数排在前5的ip地址
6 tr(单个字符的替换,但是批量字符的替换不行)
- tr ‘a-z’ ‘A-Z’ #小写转大写
- tr ‘A-Z’ ‘a-z’ #大写转小写
7 test
test = [ ] ##[ ] 就相当于test命令
“test $ a = $ b” = ["$ a" = “$ b”]
[1] test数字对比
=
!=
-eq #等于
-ne #不等于
-le #小于等于
-lt #小于
-ge #大于等于
-gt #大于
[2] test的条件关系
-a #并且
-o #或者
- 给c赋值为20,判断c是否小于等于0或者大于等于10,正确输出yes,错误输出no
[3] test对空的判定
-n #nozero 判定内容不为空
-z #判定内容为空
- 判断d是否为空:
[4] test对于文件的判定
-ef #文件节点号是否一致(硬链)
-nt #文件1是不是比文件2新
-ot #文件1是不是比文件2老
-d #目录
-S #套结字
-L #软链接
-e #存在
-f #普通文件
-b #块设备
-c #字符设备
- 测试:
vim file_check.sh
如果脚本后未指定检测文件报错“未指定检测文件”;如果脚本后指定文件不存在报错“此文件不存在”;当文件存在时请检测文件类型并显示到输出中。
测试结果:
8 && ||
&& #符合条件做动作
|| #不符合条件做动作
- 表示:执行动作 将/mnt/file导入/dev/null ls查看这个/mnt/file是否存在从而成功导入垃圾箱,如果符合条件做动作则显示/mnt/file is exist ;如果不符合条件做动作则显示:/mnt/file is not exist
- 必须先判断符合条件的动作,再判断不符合条件的动作,不然在运行程序的时候就有可能出现错误