1.什么是shell
shell 是一个命令解释器,是系统跟计算机硬件交互时使用的中间介质,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。
2.shell脚本的意义
脚本是一种解释型语言不需要编译,用 shell 脚本保存执行动作,写的是在系统之中可执行的命令,用脚本判定命令的执行条件,用脚本来实现动作的批量执行
1.记录命令执行的过程和执行逻辑,以便以后重复执行
2.脚本可以批量处理主机
3.脚本可以定时处理主机
3.如何创建脚本
vim /etc/vimrc #此文件为全局配置文件对于所有用户生效
#!/bin/bash #幻数,在脚本运行时最先运行的指令,通常都是脚本中其他指定的运行环境
vim~/.vimrc #在家目录中编辑只对当前用户本身生效
///
set nu #显示行号,
ts=2 #一个tab键表示两个空格
ai #表示自动缩进
et #表示把table键转换为空格
vim 自动添加脚本首部
autocmd BufNewFile *.sh,echoi*.script call SHELLTITLE()
func SHELLTITLE()
call append(0,"#######################")
call append(1,"# Author: lee")
call append(2,"# Version: 1.0")
call append(3,"# Create_Time: ".strftime("%Y/%m/%d"))
call append(4,"# Mail: lee@westos.org")
call append(5,"# Info: ")
call append(6,"#")
call append(8,"#######################")
call append(9,"")
call append(10,"#!/bin/bash")
endfunc
///
新建立的.sh文件会自动调用首部信息
比如 vim first.sh
4.如何执行shell脚本
1).手动在环境中开启指定解释器
sh script.sh
2).直接在当前环境中运行shell中的指令不开启新的shell
source script.sh
. script.sh
3).直接在当前环境中运行shell并使此shell环境运行脚本中的指令
chmod +x script.sh
/xxx/xxx/script.sh
./script.sh
5.如何对脚本进行测试
sh -x /mnt/westos.sh
例如在上面的first.sh里面编写脚本文件,并进行测试
cat命令会出现报错:
带+ 表示所运行的指令,不带+ 表示命令运行的输出。
脚本练习:
1.ip_show.sh 网卡 显示当前的ip
vim ip_show.sh
///
#!/bin/bash
[ -z "$1" ] && {
echo "Error: Please input interface following script !!"
exit
}
ifconfig $1 &> /dev/null || {
echo $1 is not found
exit
}&&{
ifconfig $1 | awk '/\<inet\>/{print $2}'
: }
///
2.host_message.sh 显示当前主机的名称,ip,登陆当前主机的用户
hostname: *******
ipaddress: ..***.***
username: ****
vim host_messages.sh
///
#!/bin/bash
echo "hostname: `hostname`"
echo "ipaddress: `ifconfig ens3|awk '/inet\>/{print $2}'`"
echo "username: `whoami`"
///
3.clear_log.sh 执行脚本后可以清空日志
vim clear_log.sh
///
#!/bin/bash
[ "$USER" != "root" ] && {
echo "Error: Please run script with root !!!"
exit
}
[ ! -e "/var/log/messages" ] && {
echo "Error: not found log file"
exit
}
> /var/log/messages && {
echo /var/log/messages is cleaned !
}
///
不是超级用户身份则不能运行脚本!