设为首页 收藏本站
查看: 1006|回复: 0

第四节 Vim编辑器--Shell脚本

[复制链接]

尚未签到

发表于 2018-8-22 11:22:05 | 显示全部楼层 |阅读模式
  本节课内容:
  1.Vim编辑器
  2.Shell脚本入门
  3.定时任务(计划任务----at  crontab)
  一、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关闭忽略大小写;
  :[range]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文件  ,为了便于局域网内管理某台特定主机
  [root@localhost ~]# vim /etc/hosts
  192.168.1.200  wdw.com wdw
  配置一下网卡信息和DNS信息
  Vim /etc/resolve.conf----配置DNS     这个文件是用来存放DNS配置 的  网卡配置的DNS会在这同步 ,这写 的不会在网卡同步
  [root@localhost ~]# vim /etc/resolv.conf
  nameserver 8.8.8.8
  [root@localhost ~]# nslookup www.baidu.com 解析百度的地址
  二、Shell编程
  shell就是翻译   将命令翻译给内核
  交互式:用户每输入一条命令立即执行---->不进行重定向就是显示在屏幕
  非交互式:输出重定向
  批处理:用户编写好完整shell脚本一次执行
  1.脚本文件文件一定以.sh结尾
  #/bin/bash     #是注释   第一行注释shell版本   一般第二行注释脚本要做的事
  pwd
  ls -al
  写完有俩种错误:
  第一种:
  [root@localhost ~]# nvli.sh
  -bash: nvli.sh: command not found     路径不正确
  默认情况所有的命令都是通过PATH寻找命令
  第二种:
  [root@localhost ~]# . /nvli.sh
  -bash: /nvli.sh: No such file or directory   权限不够
  -rw-r--r--.  1 root root    22 May 18 20:50 nvli.sh
  [root@localhost ~]# chmod u+x nvli.sh
  也可以bash/sh来执行
  2.接收用户的参数
  $是shell里的保留字   $# 是统计个数
DSC0000.jpg

  #/bin/bash
  echo "name=$0"
  echo "come to=$# they are $*"
  echo "No1=$1 No4=$4"
  ~
  [root@localhost ~]# ./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              测试当前用户是否有权限执行
  [root@localhost ~]# test -f nvl.sh
  [root@localhost ~]# echo $?                  $?输出判断结果
  1
  [root@localhost ~]# [ -L nvli.sh ]
  [root@localhost ~]# echo $?
  1
  2.逻辑测试   与或非
  与&&  符号两边的表达式同时成立才是真
  或||            有一个成立就是真
  非!             对表达式取反
  3.整数值测试:比较大小不能用> < =
  操作符      作用
  -eq        是否等于
  -ne        是否不等于
  -gt        是否大于
  -lt         是否小于
  -le        是否等于或小于
  -ge       是否大于或等于
  4.字符串测试:比较区别
  操作符       作用
  =           比较字符串内容是否相同
  !=          比较字符串内容是否不同
  -z          判断字符串内容是否为空
  5.流量控制语句
  5.1. if
DSC0001.jpg

  DNS=&quot;/WDW&quot;
  if [ ! -e $DNS ]
  then
  mkdir -p $DNS
  fi
  ~
  ~
  ping -c 2 -W 3 $1 &> /wdw/wdw         &---后台运行
  if [  $? -eq 0 ]
  then
  echo &quot;Host $1 is online&quot;
  else
  echo &quot;be not online&quot;
  echo &quot;error&quot;
  fi
  ~
  echo &quot;name=$0&quot;
  echo &quot;come to=$# they are $*&quot;
  echo &quot;No1=$1 No4=$4&quot;
  if [ $1 != one ]
  then
  echo &quot;error&quot;
  elif [ $1 = two  ]
  then
  echo &quot;correct&quot;
  else
  echo &quot;really&quot;
  5.2. cose   判断语句
DSC0002.jpg

  #/bin/bash
  read -p &quot;possbly is :&quot;  KEY        --读取从键盘输入的内容   给一个名字
  case &quot;$KEY&quot; in
  [A-Z] | [a-z])                      单括号内是一个判断
  echo &quot;This is char&quot;
  ;;                                         结束一个判断
  [0-9])
  echo &quot;This is number&quot;
  ;;
  *)                                          * 表示其他
  echo &quot;This is other&quot;
  esac
  5.3. for
DSC0003.jpg

  #/bin/bash
  read -p &quot;input a password :&quot; PASSWD
  for USER in `cat users.txt`
  do
  id $USER &> /null
  if [ $? -eq 0 ]
  then
  echo &quot;Exist&quot;
  else
  useradd $USER &> /null
  echo &quot;$PASSWD&quot; | passwd --stdin $USER &> /null
  if [ $? -eq 0  ]
  then
  echo &quot;$USER,creation success&quot;
  else
  echo &quot;$USER,creation failure&quot;
  fi
  fi
  done
  5.3.while
  进行条件判断,当条件不满足时结束!
DSC0004.jpg

  #/bin/bash
  NUMBER=$(expr $RANDOM % 1000)       #RANDOM 是产生随机数的环境变量
  TIME=0 #Counter                                       expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串echo &quot;number between0-999 : &quot;
  while  true
  do
  read -p &quot;input a number :&quot; INT
  let TIME++
  if [ $INT -eq $NUMBER ] ; then
  echo &quot;Right ,number=$NUMBER&quot;
  echo &quot;Time=$TIME&quot;
  echo 0
  elif [ $INT -gt $NUMBER  ] ; then
  echo &quot;big&quot;
  else
  echo &quot;small&quot;
  fi
  done
  三、定时任务
  3.1.计划任务:分为一次性和长期性  --在指定的时间段自动启动或者停止某些服务或者命令,实现自动化运维
  1.一次性任务 :at时间---设定
  [root@wdw ~]# at 10:00
  at> /etc/init.d/httpd restart          ctel +D结束
  [root@wdw ~]# at -l        #查看
  3    2018-05-19 10:00 a root
  [root@wdw ~]# atrm 3     #删除
  [root@wdw ~]# at -l
  [root@wdw ~]#
  2.长期性任务:默认使用crond服务
  crontab -e 添加 编辑计划任务
  crontab -u 编辑他人的任务(root使用)
DSC0005.jpg

  字段        说明
  分钟       取值为0~59的整数
  小时       取值为0~23的任意整数
  日期       取值为1~31的任意整数
  月份       取值为112的任意整数
  星期       取值为0~7的任意整数,其中0与7均为星期日
  命令      要执行的命令或程序脚本
  例:每周1 3 5 凌晨3:25 使用tar,对网站数据打包
  [root@wdw ~]# 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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-555067-1-1.html 上篇帖子: shell和python对比对目录下不同文件 下篇帖子: shell定时备份
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表