shell脚本的基本命令

7 篇文章 0 订阅

diff

用来比较两个文件或目录的不同
diff [options] [target1] [target2]

/mnt新建文件file1 file2比较不同:

[root@desktop110 mnt]# diff file1 file2
1,2c1              ###表示第一个文件file1的第1行和第2行change下边的两行内容就和file2文件相同
< Hello  World
< 123
---
> hello world
a 添加
c 改变
d 删除

这里写图片描述

这里写图片描述

diff 中常用的参数
-b 或 --ignore-space-change  不检查空格字符的不同
-B 或 --ignore-blank-lines  不检查空白行
-c  显示全部内文,并标出不同之处
-i 或 --ignore-case  不检查大小写的不同
-p :若比较的文件为 C 语言的程序码文件时,显示差异所在的
函数名称;
-q 或 --brief :仅显示有无差异,不显示详细的信息
-r 或 --recursive :比较子目录中的文件
-u 以合并的方式来显示文件内容的不同
打补丁

yum install patch -y ##下载patch命令

用于文件不同文件打布丁
patch [options] file.old file.path
-b

这里写图片描述

cut命令多用与字符截取

cut -d
指定分隔符
cut -f 1,7|1-7 指定截取的列
cut -c 1,4|1-4 指定截取的字符位置
cut -b 1,4|1-4 指定截取的字节位置

复制/etc/passwd 到/mnt下

head -n 5 passwd  | cut -d : -f 1  ##查看passwd前5行内容,并截取分割符:的第一列内容
head -n 5 passwd  | cut -d : -f 17  ##查看passwd前5行内容,并截取分割符:的第一列第7列内容
head -n 5 passwd  | cut -d : -f 1-3  ##查看passwd前5行内容,并截取分割符:的第一列到第3列内容

这里写图片描述
这里写图片描述

实验:编写脚本ip_show.sh输入bond0查看其ip
#!/bin/bash
ifconfig $1 | head -n 2 | tail -n 1 | cut -d " " -f 10

https://img-blog.csdn.net/20180306192115015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGl4bHhs/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast” alt=”这里写图片描述” title=”” />

编写脚本host_show.sh查看当前系统所有可以登陆的shell的用户
 #!/bin/bash
 grep bin/bash /etc/passwd | cut -d : -f 1

这里写图片描述

sort主要用于排序

sort -n 纯数字排列正序号
sort -nr 倒序(纯数字)
sort -r 倒序排列按每个数字的第一个字符
sort -u 去掉重复数字
sort -o 输出到指定文件
sort -t 指定分隔符
sort -k 指定要排序的列
-----------------
对重复字符的处理
uniq -u 显示唯一的行不重复
uniq -d 显示重复的行
uniq -c 每行显示一次并统计重复次数

对于file1
这里写图片描述
按正序从小到大排列

sort -n file1  ##file1从小到大正序排列(纯数字)

这里写图片描述

sort -r   file1  ##按反序从大到小排列

显然9不是最大的,但却排在了第一位,这时因为参数-r是按数字第一位大小排列的
这里写图片描述

sort -rn  file1  倒序从大到小纯数字排序

这里写图片描述

sort -u file1 去掉重复字排序
sort -un file1 去掉重复字按正序排列
sort -ur file1 去掉重复字按第一个数字倒序排列
sort -urn file1 去掉重复字按纯数字正序排列

这里写图片描述

sort -o  新文件名  输出指定文件 常和其他参数配合使用

这里写图片描述

sort -t 分隔符 -k num   指定分隔符,按第num列排序
eg:
sort -n file1 -t " " -k 1  对于文件file1按分割符空格前第一列正序排序

这里写图片描述

对重复字符的处理(常配合sort使用)
uniq -u 显示唯一的行不重复(重复的数字行与行之间未挨着算不重行)
uniq -d 显示重复的行(重复的n行紧挨着)
uniq -c 每行显示一次并统计重复次数

这里写图片描述

sort -n file2 | uniq -u  file2正序排列后显示唯一的不重行

这里写图片描述

&& 和 ||

&& 用来执行条件成立后执行的命令
|| 用来执行条件不成立后执行的命令

例如:
ping -c1 -w1 172.25.254.111 && echo up
ping -c1 -w1 172.25.254.111 || echo up

实验:编写脚本ping.sh 执行脚本平通某个id输出该ip is net up,否则该ip is net down
#!/bin/bash
ping -c1 -w1 $1 &>/dev/null && echo $1 is net up || echo $1 is net down

这里写图片描述

test命令

test 命令和[]等同
test"$A" == "$B" 等同于 [ "$A" == "$B" ]
[ "$A" = "$B" ] A等于B
[ "$A" !="$B" ] A不等于B
[ "$A" -ne "$B" ]  -ne等于
[ "$A" -eq "$B" ] -eq等于
[ "$A" -le "$B" ] -le小于等于
[ "$A" -lt "$B" ] -lt小于
[ "$A" -ge "$B" ] -ge大于等于
[ "$A" -gt "$B" ] -gt大于
[ "$A" -ge "$B" -a "$A" -le "$C" ]  -a且 A大于等于B且A小于等于C
[ "$A" -ge "$B" -o "$A" -le "$C" ]  -o或 A大于等于B或A小于等于C
---------------
[ -z "$A" ] A为空
[ -n "$A" ] A不为空
---------------
[ "file1" -ef "file2" ]第一个档案与第二个档案为同一个档案( link 之类的档案)
[ "file1" -ot "file2" ]第一个档案比第二个档案旧
[ "file1" -nt "file2" ]第一个档案比第二个档案新
-------------
[ -e "file" ]   file文件存在否
[ -f "file" ]   file为普通文件
[ -L "file" ]   file为连接
[ -S "file" ]   file套接字
[ -b "file" ]   file块设备 
[ -d "file" ]   file目录
[ -c "file" ]   file字符设备
----------------

实验1:-a 和 -o

[ "$A" -ge "$B" -a "$A" -le "$C" ]  -a且 A大于等于B且A小于等于C
[ "$A" -ge "$B" -o "$A" -le "$C" ]  -o或 A大于等于B或A小于等于C

输入三个数A=6,B=4,C=7若A大于等于B且A小于等于C显示yes,否则显示no
这里写图片描述
输入三个数A=4,B=6,C=7若A大于等于B且A小于等于C显示yes,否则显示no
这里写图片描述
输入三个数A=4,B=6,C=7若A大于等于B或A小于等于C显示yes,否则显示no
这里写图片描述

实验2:判断A是否为空

[ -z "$A" ]  空字符

这里写图片描述

[ -n "$A" ]  非空字符

这里写图片描述

实验3:判断文件的新旧

[ "file1" -ot "file2" ]第一个档案比第二个档案旧
[ "file1" -nt "file2" ]第一个档案比第二个档案新

这里写图片描述

实验3:判断文件是否为同一类型

[ "file1" -ef "file2" ]第一个档案与第二个档案为同一个档案( link 之类的档案)

这里写图片描述

实验4:新建脚本check_filestyle.sh判断文件的属性

[ -e "file" ]   file文件存在否
[ -f "file" ]   file为普通文件
[ -L "file" ]   file为连接
[ -S "file" ]   file套接字
[ -b "file" ]   file块设备 
[ -d "file" ]   file目录
[ -c "file" ]   file字符设备

实验7:新建cpu_use.sh当/目录使用率大于80%时发邮件给root用户,

#!/bin/bash
USER=`df / | tail -n 1 | cut -d " " -f 14 | cut -d % -f 1`
[ "$USER" -gt "80" ] && echo  "CPU USED RATE TOO MUCH" | mail -s warning root || echo &>/dev/null

这里写图片描述

实验6:新建脚本clean_logs.sh root用户可以执行该脚本清空日志,显示清理成功显示内容字体为红色;普通用户则不能清理日志,显示内容为绿色

#!/bin/bash
[ "$USER" = "root" ] &&
          (
            >/var/log/messages 
            echo -e "\033[31;1mRoot clean logs!!\033[0m"
       )||(
           echo -e "\033[32;1mYou are not root,Don't clean logs!!\033[0m"
           )

这里写图片描述

附加图

3m斜体2m枣红色
这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值