1. 什么是shell
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell
Shell 脚本(shell script),是一种为 shell 编写的脚本程序
2. shell脚本的意义
- 纪录命令执行的过程和执行逻辑,以便以后重复执行
- 脚本可以批量处理主机
- 脚本可以定时处理主机
3. 创建shell脚本
#!:是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
#!/bin/bash:幻数(此脚本用/bin/bash来解释执行)
自动添加脚本首部:vim ~/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et
autocmd FileType sh set ai ts=4
autocmd BufNewFile *.sh,*.script call WESTOS()
"map <F4> ms:call WESTOS()<cr>'s
func WESTOS()
call append(0,"###########################")
call append(1,"## Author: zy")
call append(2,"## Version:")
call append(3,"## Create_Time: ".strftime("%Y/%m/%d"))
call append(4,"## Mail: [email protected]")
call append(5,"## Info: ")
call append(6,"###########################")
call append(7,"")
call append(8,"#!/bin/bash")
endfunc
测试:新建一个文件 test.sh,扩展名为 sh(sh代表shell),自动生成首部
4. 运行shell脚本
运行方法1:
- 手动在环境中开启指定解释器
sh 脚本文件
:运行
运行方法2:
直接在当前环境中运行shell中的指令(不开启新的shell)
source 脚本文件
. 脚本文件
运行方法3:
开启脚本中指定的shell并使用此shell环境运行脚本中的指令
(不需要在第一行指定解释器信息)
-
chmod +x 脚本文件名
:给予执行权限 -
/脚本文件名
或. /脚本文件名
:执行
5. 调试shell脚本
|
|
---|---|
|
命令从-c后的字符串读取 |
|
实现脚本交互 |
|
进行shell脚本的语法检查 |
|
实现shell脚本逐条语句的跟踪 |
sh -x 脚本文件
:显示脚本执行过程
+ #运行指令
不带+ #命令运行的输出
6. 脚本练习
练习一:
运行 ‘ip_show.sh 网卡’ ,显示当前IP
ifconfig $1 | awk '/inet\>/{print $2}'
练习二:
host_messages.sh
- 显示当前主机名称,ip登陆当前主机的用
- 格式:
hostname: XXXX
ipaddress: XXXX.XXXX.XXXX.XXXX
username: root
echo "hostname: $HOSTNAME"
echo "ipaddress: $(ifconfig 网卡 | awk '/inet\>/{print $2}')"
echo "username: $USER"
练习三:
clear_log.sh
执行此脚本后可以清空日志
#检测是否是root用户执行此脚本
[ "$USER" = "root" ] || {
echo -e "\033[31m Error: Please run script with root ! \033[0m"
exit 1
}
#清空日志
LOGS=`sed -n '/RULES/,$p' /etc/rsyslog.conf | awk '!/^#|^$/&&/var/{print $2}' | sed 's/-//g'`
for LOG in $LOGS
do
> $LOG && echo -e "\033[32m $LOG is cleared ! \033[0m"
done