Linux之shell脚本简介、shell脚本基础命令和应用

什么是 shell

 shell 也是操作系统中的一个软件,它包在 linux 内核的外面,为用户和内核之间的交互提供了一个接口。
 系统中的命令用 shell 去解释,shell 接收系统回应的输出并显示其到屏幕中。
 bash = GNU Bourne-Again Shell

什么是 shell 脚本

脚本是一种解释型语言
用 shell 脚本保存执行动作
用脚本判定命令的执行条件
用脚本来实现动作的批量执行

一、如何创建新 shell 脚本

vim file.sh        用 vim 编写脚本
   #!/bin/bash    脚本使用的解释器,通常用幻数 "#!" 指定
chmod +x file.sh   给予可执行权限 
sh /mnt/file.sh    执行脚本

这里写图片描述

二、自动添加脚本信息
在打开xx.sh脚本文件时自动出现信息
1、编辑系统配置文件

vim /etc/vimrc

2、添加内容
新建.sh脚本文件时即会显示编辑内容
这里写图片描述
3、新建xx.sh脚本文件查看
这里写图片描述

三、diff命令与patch软件
实验环境
建立文件添加内容

    vim linux:
    linux
    vim linux1:
    HXD
    linux

这里写图片描述

diff

diff 命令是用来比较两个文件或目录的不同。
1、比较2个文件的内容

diff linux linux1
1a2                 ##a表示添加,add;c表示更改,change;d表示删除,delete
> HXD

2、显示补丁信息、将补丁信息导入linux.path中、打补丁

diff -u linux linux1   -u以合并的方式来显示文件内容的不同
diff -u linux linux1 > linux.path

这里写图片描述

patch

安装patch服务
用于文件不同内容打补丁

yum install patch -y

给linux与linux1相比缺失的内容打补丁内容

patch linux linux.path 

这里写图片描述
打补丁不覆盖原文件

patch -b linux linux.path 

此时会产生linux.orig原内容文件,linux文件已被打补丁
这里写图片描述
3、目录比较 -r
这里写图片描述
四、cut命令

cut 命令多用与字符截取
cut -d          指定分隔符
cut -f 1,7|1-7  指定截取的列
cut -c 1,4|1-4  指定截取的字符位置

这里写图片描述
脚本应用一:
要求:截取ifconfig eth0的IP字符
编辑自动运行脚本文件

vim ip_show.sh

脚本内容

ifconfig eth0 | awk -F " " '/inet\>/{print $2}'

这里写图片描述
运行脚本

sh ip_show.sh

这里写图片描述
五、&&和||
命令输出正确,显示&&后面的内容;错误则显示||后面的内容。
实验内容
ip存在即up,不存在则down

   ping -c1 -w1 172.25.254.108 &> /dev/null && echo 172.25.254.108 is up  || echo 172.25.254.108 is down
   ping -c1 -w1 172.25.254.333 &> /dev/null && echo 172.25.254.333 is up  || echo 172.25.254.333 is down

这里写图片描述
六、sort和uniq

sort
多用于字符排序
sort -n 纯数字排序
sort -r 倒序
sort -u 去掉重复数字
sort -o 输出到指定文件中
sort -t 指定分隔符
sort -k 指定要排序的列

将文件里的数字倒序排列(只排列第一列数字)
这里写图片描述
将文件里的数字倒序排列(2列数字都排列)
这里写图片描述
指定冒号后的数字排列
这里写图片描述

uniq

对重复字符做相应的处理

uniq -u 显示唯一的行
uniq -d 显示重复的行
uniq -c 每行显示一次并统计重复次数

这里写图片描述
脚本应用二
要求:列出/mnt中最大的文件
编辑脚本

vim max.sh

脚本内容

ls -Sl /mnt | grep -v total | awk -F " " 'NR==1{print $9}'

这里写图片描述
运行脚本

sh max.sh

这里写图片描述

七、test命令
在执行脚本文件时,某些操作错误并不会有提示,所以需要test命令。
test 命令和 [] 等同

test "$A" == "$B" 等同 [ "$A" == "$B" ]
[ "$A" = "$B" ]
[ "$A" != "$B" ]
[ "$A" -eq "$B" ]    ##相等
[ "$A" -ne "$B" ]    ##不同
[ "$A" -le "$B" ]    ##小于等于
[ "$A" -lt "$B" ]    ##小于
[ "$A" -ge "$B" ]    ##大于等于
[ "$A" -gt "$B" ]    ##大于
[ "$A" -ne "$B" -a "$A" -gt "$B" ]  ##a不等于b且a大于等于b  
[ "$A" -ne "$B" -o "$A" -gt "$B" ]  ##a不等于b或者a大于等于b
[ -z "$A" ]    ##为空
[ -n "$A" ]    ##不为空
[ "$A" = "$B" ]

这里写图片描述

[ -z "$A" ]    ##为空
[ -n "$A" ]    ##不为空

这里写图片描述

脚本应用3
内容:输入一个数字查看是否小于10
编辑脚本

vim num_check.sh 

脚本内容

[ -z "$1" ]&& {
        echo "Please input a number after script!!"
        exit 1
}
[ "$1" -gt "0" -a "$1" -lt "10" ] && {
        echo "$1 is between 1~10"
}||{
        echo "$1 is not between 1~10"
}

运行脚本

sh num_check.sh

这里写图片描述

[ "file1" -ef "file2" ]       ##2个文件相等
[ "file1" -nt "file2" ][ "file1" -ot "file2" ]

这里写图片描述

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

编辑脚本文件

vim file.sh

脚本内容

[ "$1" "/mnt/file" ] && echo yes || echo no

查看文件是否存在
查看是否是软链接
这里写图片描述
脚本应用4
要求:编写脚本检测/mnt/file是什么类型的文件
编辑脚本文件

vim file_check.sh 

脚本内容
这里写图片描述
执行脚本

sh file_check.sh

这里写图片描述
八、tr命令
文件无论大小写都可以执行
编辑脚本文件

vim test.sh

脚本内容
这里写图片描述
执行脚本

sh test.sh

这里写图片描述
脚本应用5
要求:检测用户是否存在,不存在就建立
编辑脚本文件

vim user_create.sh

脚本内容
这里写图片描述
执行脚本

sh user_create.sh

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值