shell也是操作系统中的一个软件它包在linux内核的外面,为用户和内核之间的交互提供了一个接口。
系统中的命令用shell去解释shell接收系统回应的输出并显示其到屏幕中
bash=GNUBourne-AgainShell
shell脚本
脚本是一种解释型语言
用shell脚本保存执行动作
用脚本判定命令的执行条件
用脚本来实现动作的批量执行
如何创建新shell脚本
vimscript.sh用vim编写脚本
#!/bin/bash脚本使用的解释器,通常用幻数“#!”指定
AUTHOR脚本作者
DATE脚本创作时间
MAIL脚本作者联系方式
VERSION脚本的版本
**脚本编写以.sh结尾
1.自动编辑脚本的说明信息
vim/etc/vimrc###写进最后面**写入:”mapms:callWESTOS()’s###按F4可以填充进去,但现在被注释了,最前面的双引号,标注释
autocmdBufNewFile*.shexec”:callWESTOS()”###所有新建的以.sh结尾的文件都会自动填充
funcWESTOS()
callappend(0,”###############################”)
callappend(1,”#Author:xbw”.(“#”))###表示建立者
callappend(2,”#Version:”.(“#”))###脚本的版本信息
callappend(3,”#Mail:”.(“#”))###建立者邮箱
callappend(4,”#Date:”.strftime(“%Y-%m-%d”).(“#”))###建立时间
callappend(5,”#Description:”.(“#”))###脚本描述
callappend(6,”#”.(“#”))
callappend(7,”###############################”)
callappend(8,””)
callappend(9,”#!/bin/bash”)
endfunc
其中call,表示调用、
linux中的shell脚本编程基本知识
效果图
linux中的shell脚本编程基本知识
2.diff比较和patch打补丁
diff命令是用来比较两个文件或目录的不同
vimwestos
写入:helloworld
westos
vimwestos1
写入:helloworld
xbw
diffwestoswestos1###比较这两个文件
linux中的shell脚本编程基本知识
diff-uwestoswestos1###-u,以合并的方式来显示文件内容的不同
diff-uwestoswestos1>westos.path###把比较结果重定向到westos.path
ls
catwestos.path###查看此文件
linux中的shell脚本编程基本知识
linux中的shell脚本编程基本知识
PATCH:用于文件不同文件打布丁
yuminstallpatch-y
patchwestoswestos.path####不会保留原文件
ls
catwestos
catwestos1
linux中的shell脚本编程基本知识
patch-bwestoswestos.path###-b,加上后会保留原文件内容到westos.orig
catwestos
catwestos1
catwestos.orig
linux中的shell脚本编程基本知识
2.比较目录
mkdirlinux
mkdirunix
ls
touchlinux/file
diff-rlinuxunix
linux中的shell脚本编程基本知识
3.cut命令多用与字符截取
cut-d
指定分隔符
cut-f1,7|1-7指定截取的列(1,7表示1列和7列、1-7表示1到7列)
cut-c1,4|1-4指定截取的字符位置
cut-d:-f1passwd
linux中的shell脚本编程基本知识
cut-d:-f1-3passwd
linux中的shell脚本编程基本知识
cut-d:-f1,3passwd
linux中的shell脚本编程基本知识
cut-d:-f3-passwd
linux中的shell脚本编程基本知识
cut-c1,3passwd
linux中的shell脚本编程基本知识
1.写一个脚本,执行后显示本机ip,脚本名为ip_show.sh
vimip_show.sh
ship_show.sh###查看结果
以下两种写法都可以实现
linux中的shell脚本编程基本知识
linux中的shell脚本编程基本知识
linux中的shell脚本编程基本知识
2.写一个脚本,ping主机,主机开着就显示isup,没有或关着就显示isdown
vimcheck_ip.sh
shcheck_ip.sh172.25.254.111###验证结果
linux中的shell脚本编程基本知识
4.排序sort
vimxbw
sort-nxbw##纯数字排序
sort-rnxbw##倒序
sort-uxbw##去掉重复数字
sort-o###输出到指定文件中
sort-t###指定分隔符
sort-k###指定要排序的列
sort-t:-k2-rnxbw###将xbw中冒号分割符第2列排倒序
linux中的shell脚本编程基本知识
sort-t:-k1-nxbw###将xbw中冒号分割符第1列排序
linux中的shell脚本编程基本知识
sort-t:-k1-nxbw-osort###将排序结果放入sort文件中
catsort
linux中的shell脚本编程基本知识
sort-nxbw|uniq-c###每行显示一次并统计重复次数
linux中的shell脚本编程基本知识
sort-nxbw|uniq-d###显示重复的行
linux中的shell脚本编程基本知识
sort-nxbw|uniq-u###显示唯一的行
linux中的shell脚本编程基本知识
1.写一个脚本,找出/mnt里最大的文件
vimfind_big.sh
shfind_big.sh
test命令
下图中这两种写法都可以实现
linux中的shell脚本编程基本知识
linux中的shell脚本编程基本知识
linux中的shell脚本编程基本知识
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”-ne”$B”-o”$A”-gt”$B”]###满足等于或大于(或的关系)
[-z”$A”]###检测是否为空
[-n”$A”]###检测是否不为空
#表示结果为真
||###表示结果为假
linux中的shell脚本编程基本知识
1.写一个脚本,判断主机是否开启,若没有写主机ip,则提示加上主机ip
vimcheck_ip.sh
shcheck_ip.sh###给提示加上ip
shcheck_ip.sh172.25.254.111###显示up
shcheck_ip.sh172.25.254.333###显示down
linux中的shell脚本编程基本知识
linux中的shell脚本编程基本知识
2.写一个脚本,判断一个数在0到10之间,若没写数字,提示给个数字
vimnum_check.sh
shnum_check.sh##提示给数字
shnum_check.sh8###显示结果正确
shnum_check.sh20###显示结果错误
linux中的shell脚本编程基本知识
[“file1″-ef”file2”]###判断两个文件是否节点一致,是否为硬链接
touchfile
ln/mnt/file/mnt/file1###作链接
ls-lifile*
[“/mnt/file”-ef”/mnt/file1″]&&echoyes||echono
[“/mnt/file”-ef”/etc/passwd”]&&echoyes||echono
linux中的shell脚本编程基本知识
[“file1″-nt”file2”]###判断file1是否比file2新建立
[“file1″-ot”file2”]###判断file1是否比file2迟建立
[“/mnt/file”-ot”/mnt/file2″]&&echoyes||echono
linux中的shell脚本编程基本知识
[-e”file”]###测试文件是否存在
[-f”file”]###测试文件是否为普通文件
[-L”file”]###测试文件是否为软链接
[-S”file”]###测试文件是否为套接字
[-b”file”]###测试文件是否为块设备
[-d”file”]###测试文件是否为目录
[-c”file”]###测试文件是否为字符设备
1.vimfile.sh####为做实验先写一个脚本进行验证
写入:
#!/bin/bash
[“$1″”/mnt/file”]&&echoyes||echono
touchfile
shfile.sh-e
shfile.sh-f
linux中的shell脚本编程基本知识
ln-s/mnt/file
ll
shfile.sh-L
linux中的shell脚本编程基本知识
rm-frfile
yuminstallmariadb-server.x86_64-y
ls
systemctlstartmariadb
rsync-D/var/lib/mysql/mysql.sock/mnt/file
ll
shfile.sh-S
linux中的shell脚本编程基本知识
rm-frfile
rsync-D/dev/vdb/mnt/file
ll
shfile.sh-b
linux中的shell脚本编程基本知识
rsync-D/dev/pts/1/mnt/file
ll
shfile.sh-c
linux中的shell脚本编程基本知识
rm-frfile
mkdirfile
shfile.sh-d
linux中的shell脚本编程基本知识
1.写一个脚本,查看文件是否存在,存在的话属于什么文件类型
vimfile_check.sh
shfile_check.sh文件名####验证
linux中的shell脚本编程基本知识
验证普通文件和块设备
linux中的shell脚本编程基本知识
验证套接字和目录
linux中的shell脚本编程基本知识
验证软链接
linux中的shell脚本编程基本知识
tr大小写转换
vimhello.sh
写入:
#!/bin/bash
[“$1″=”hello”]&&{
echoyes
}||{
echono
}
shtest.shhello####小写可以识别
shtest.shHELLO###大写就不会识别,会报错
linux中的shell脚本编程基本知识
linux中的shell脚本编程基本知识
tr’a-z”A-Z'