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

时间:2021-06-20 15:36:50

什么是 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    执行脚本

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

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

vim /etc/vimrc

2、添加内容
新建.sh脚本文件时即会显示编辑内容
Linux之shell脚本简介、shell脚本基础命令和应用
3、新建xx.sh脚本文件查看
Linux之shell脚本简介、shell脚本基础命令和应用

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

    vim linux:
    linux
    vim linux1:
    HXD
    linux

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

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

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

patch

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

yum install patch -y

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

patch linux linux.path 

Linux之shell脚本简介、shell脚本基础命令和应用
打补丁不覆盖原文件

patch -b linux linux.path 

此时会产生linux.orig原内容文件,linux文件已被打补丁
Linux之shell脚本简介、shell脚本基础命令和应用
3、目录比较 -r
Linux之shell脚本简介、shell脚本基础命令和应用
四、cut命令

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

Linux之shell脚本简介、shell脚本基础命令和应用
脚本应用一:
要求:截取ifconfig eth0的IP字符
编辑自动运行脚本文件

vim ip_show.sh

脚本内容

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

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

sh ip_show.sh

Linux之shell脚本简介、shell脚本基础命令和应用
五、&&和||
命令输出正确,显示&&后面的内容;错误则显示||后面的内容。
实验内容
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

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

sort

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

将文件里的数字倒序排列(只排列第一列数字)
Linux之shell脚本简介、shell脚本基础命令和应用
将文件里的数字倒序排列(2列数字都排列)
Linux之shell脚本简介、shell脚本基础命令和应用
指定冒号后的数字排列
Linux之shell脚本简介、shell脚本基础命令和应用

uniq

对重复字符做相应的处理

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

Linux之shell脚本简介、shell脚本基础命令和应用
脚本应用二
要求:列出/mnt中最大的文件
编辑脚本

vim max.sh

脚本内容

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

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

sh max.sh

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

七、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" ]

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

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

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

脚本应用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

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

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

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

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

编辑脚本文件

vim file.sh

脚本内容

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

查看文件是否存在
查看是否是软链接
Linux之shell脚本简介、shell脚本基础命令和应用
脚本应用4
要求:编写脚本检测/mnt/file是什么类型的文件
编辑脚本文件

vim file_check.sh 

脚本内容
Linux之shell脚本简介、shell脚本基础命令和应用
执行脚本

sh file_check.sh

Linux之shell脚本简介、shell脚本基础命令和应用
八、tr命令
文件无论大小写都可以执行
编辑脚本文件

vim test.sh

脚本内容
Linux之shell脚本简介、shell脚本基础命令和应用
执行脚本

sh test.sh

Linux之shell脚本简介、shell脚本基础命令和应用
脚本应用5
要求:检测用户是否存在,不存在就建立
编辑脚本文件

vim user_create.sh

脚本内容
Linux之shell脚本简介、shell脚本基础命令和应用
执行脚本

sh user_create.sh

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