第四节 Vim编辑器--Shell脚本
本节课内容:1.Vim编辑器
2.Shell脚本入门
3.定时任务(计划任务----atcrontab)
一、Vim编辑器 默认安装在Linux上的
作用:编写 修改文档
Vim有三个工作模式:
1.命令模式:控制光标的移动 对文本进行复制查找 删除 和粘贴
2.输入模式:正常录入文本信息
3.末行模式:保存和退出文档有效标记环境
命令模式:
删除一行 光标指定 按 dd 删除删除多行[数字]dd
复制一行光标指定啊 按p 可以把你复制的和删除的都粘贴过来
撤销 按u
输入模式:
从命令模式 a i o进入输入模式
a:进入输入模式 并且光标后移一位
i:进入输入模式 光标不动
o:进入输入模式 重起一行
vi编辑器vim是vi的升级版
末行模式:
命令行按 :进入
w 保存 q 退出 !强制
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
:s/one/two 将当前光标所在行的第一个one替换成two
:s/one/two/g 将当前光标所在行的所有one替换成two
:%s/one/two/g 将全文中的所有one替换成two
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串
/string自顶向下查找;
?string自底向上查找;
:set ingorecase开启忽略大小写;
:set no ingorecase关闭忽略大小写;
:s/字符串A/字符串B/[参数]
range表示范围:1,4--->第一行至第四行;
$---->最后一行;
%---->全文;
字符串A:被B替换的字符串;
参数:
c---->每次替换前进行询问;
e---->不显示错误信息;
g---->替换一行中所有匹配项;
针对程序员模块:
:syntax on开启语法检查;
:set auto indent自动缩进,默认8个空格;
:set shift> 可以通过编辑配置/etc/vimrc使某些针对程序员功能自动生效。
其他快捷命令:
^ 将光标移至行首;
$ 将光标移至行尾;
G 将光标移至文件尾;
gg 将光标移至文件头;
ctrl +f 向下翻页;
ctrl + b 向上翻页;
u 撤销操作;
x 删除光标所在位置内容;
dd 删除光标所在行;
D 删除光标所在位置到所在行结尾;
yy 复制光标所在行;
p 在光标所在位置将复制或删除内容粘贴
配置主机名/etc/hosts文件,为了便于局域网内管理某台特定主机
# vim /etc/hosts
192.168.1.200wdw.com wdw
配置一下网卡信息和DNS信息
Vim /etc/resolve.conf----配置DNS 这个文件是用来存放DNS配置 的网卡配置的DNS会在这同步 ,这写 的不会在网卡同步
# vim /etc/resolv.conf
nameserver 8.8.8.8
# nslookup www.baidu.com 解析百度的地址
二、Shell编程
shell就是翻译 将命令翻译给内核
交互式:用户每输入一条命令立即执行---->不进行重定向就是显示在屏幕
非交互式:输出重定向
批处理:用户编写好完整shell脚本一次执行
1.脚本文件文件一定以.sh结尾
#/bin/bash #是注释 第一行注释shell版本 一般第二行注释脚本要做的事
pwd
ls -al
写完有俩种错误:
第一种:
# nvli.sh
-bash: nvli.sh: command not found 路径不正确
默认情况所有的命令都是通过PATH寻找命令
第二种:
# . /nvli.sh
-bash: /nvli.sh: No such file or directory 权限不够
-rw-r--r--.1 root root 22 May 18 20:50 nvli.sh
# chmod u+x nvli.sh
也可以bash/sh来执行
2.接收用户的参数
$是shell里的保留字 $# 是统计个数
#/bin/bash
echo "name=$0"
echo "come to=$# they are $*"
echo "No1=$1 No4=$4"
~
# ./nvli.sh one two tree four five six seven
name=./nvli.sh
they are one two tree four five six seven
No1=one No4=four
形参和实参的传递
3.判断用户的参数条件
成立返回数字0条件不成立返回(非零)随机数
判断语句:两种形式
test命令!----> test参数表达式
[]命令----> [表达式 1 参数 表达式 2]
判断种类:
1.文件测试---判断文件是否存在,并且是什么类型
操作符 作用
-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-L 链接文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
# test -f nvl.sh
# echo $? $?输出判断结果
1
# [ -L nvli.sh ]
# echo $?
1
2.逻辑测试 与或非
与&&符号两边的表达式同时成立才是真
或|| 有一个成立就是真
非! 对表达式取反
3.整数值测试:比较大小不能用> < =
操作符 作用
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于
4.字符串测试:比较区别
操作符 作用
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 判断字符串内容是否为空
5.流量控制语句
5.1. if
DNS="/WDW"
if [ ! -e $DNS ]
then
mkdir -p $DNS
fi
~
~
ping -c 2 -W 3 $1 &> /wdw/wdw &---后台运行
if [$? -eq 0 ]
then
echo "Host $1 is online"
else
echo "be not online"
echo "error"
fi
~
echo "name=$0"
echo "come to=$# they are $*"
echo "No1=$1 No4=$4"
if [ $1 != one ]
then
echo "error"
elif [ $1 = two]
then
echo "correct"
else
echo "really"
5.2. cose 判断语句
#/bin/bash
read -p "possbly is :"KEY --读取从键盘输入的内容 给一个名字
case "$KEY" in
| ) 单括号内是一个判断
echo "This is char"
;; 结束一个判断
)
echo "This is number"
;;
*) * 表示其他
echo "This is other"
esac
5.3. for
#/bin/bash
read -p "input a password :" PASSWD
for USER in `cat users.txt`
do
id $USER &> /null
if [ $? -eq 0 ]
then
echo "Exist"
else
useradd $USER &> /null
echo "$PASSWD" | passwd --stdin $USER &> /null
if [ $? -eq 0]
then
echo "$USER,creation success"
else
echo "$USER,creation failure"
fi
fi
done
5.3.while
进行条件判断,当条件不满足时结束!
#/bin/bash
NUMBER=$(expr $RANDOM % 1000) #RANDOM 是产生随机数的环境变量
TIME=0 #Counter expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串echo "number between0-999 : "
whiletrue
do
read -p "input a number :" INT
let TIME++
if [ $INT -eq $NUMBER ] ; then
echo "Right ,number=$NUMBER"
echo "Time=$TIME"
echo 0
elif [ $INT -gt $NUMBER] ; then
echo "big"
else
echo "small"
fi
done
三、定时任务
3.1.计划任务:分为一次性和长期性--在指定的时间段自动启动或者停止某些服务或者命令,实现自动化运维
1.一次性任务 :at时间---设定
# at 10:00
at> /etc/init.d/httpd restart ctel +D结束
# at -l #查看
3 2018-05-19 10:00 a root
# atrm 3 #删除
# at -l
#
2.长期性任务:默认使用crond服务
crontab -e 添加 编辑计划任务
crontab -u 编辑他人的任务(root使用)
字段 说明
分钟 取值为0~59的整数
小时 取值为0~23的任意整数
日期 取值为1~31的任意整数
月份 取值为112的任意整数
星期 取值为0~7的任意整数,其中0与7均为星期日
命令 要执行的命令或程序脚本
例:每周1 3 5 凌晨3:25 使用tar,对网站数据打包
# crontab -l
25 3 * * 1,3,5/usr/bin/tar -czvf yellow.tar.qz /ver/www/html
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
用(,)逗号表示多个时间段8,9,12
用(-)减号表示一段时间8-12--->8 9 10 11 12
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
分字段必须要有数值的 不能为空或0 (*/1) 日期和星期不能同时使用
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
以上五个是独立的命令参数,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的gz
-j:有bz2属性的 bz2
-J :有xz属性的 xz
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
页:
[1]