第4章 Vim编辑器与Shell脚本_第1页
第4章 Vim编辑器与Shell脚本_第2页
第4章 Vim编辑器与Shell脚本_第3页
第4章 Vim编辑器与Shell脚本_第4页
第4章 Vim编辑器与Shell脚本_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PPT模板:/moban/PPT素材:/sucai/PPT背景:/beijing/PPT图表:/tubiao/PPT下载:/xiazai/PPT教程:/powerpoint/资料下载:/ziliao/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/PPT论坛:PPT课件:/kejian/语文课件:/kejian/yuwen/数学课件:/kejian/shuxue/英语课件:/kejian/yingyu/美术课件:/kejian/meishu/科学课件:/kejian/kexue/物理课件:/kejian/wuli/化学课件:/kejian/huaxue/生物课件:/kejian/shengwu/地理课件:/kejian/dili/历史课件:/kejian/lishi/Contents目录4.1

Vim编辑器4.2编写Shell脚本4.3流程控制语句4.4计划任务服务程序1Vim编辑器Vim编辑器的三种模式Vim编辑器之所以能得到广大用户的认可,是因为Vim编辑器中设置了三种模式:命令模式、末行模式和编辑模式,每种模式又分别支持多种不同的命令快捷键,大大提高了工作效率,而且用户在习惯之后也会觉得很方便。要想高效率地操作文本,就必须先搞清这三种模式的操作区别及各个模式之间的切换方法,如图4-1所示。(1)命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。(2)末行模式:可以保存或退出文档,以及设置编辑环境。(3)编辑模式:可进行正常的文本录入。VIM编辑器的切换在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到编辑模式后再进行文档编辑工作,而每次在编辑完文后后需要先返回命令模式,再进入末行模式,执行文档的保存或退出操作。在Vim编辑器中,无法直接从编辑模式切换到末行模式。末行模式末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式中输入一个冒号就可以了。命

令作

用:w保存:q退出:q!强制退出(放弃对文档的修改):wq!强制保存退出:setnu显示行号:setnonu不显示行号:命令执行该命令:整数跳转到该行:s/one/two将当前光标所在行的第一个one替换成two:s/one/two/g将当前光标所在行的所有one替换成two:%s/one/two/g将全文中的所有one替换成two?字符串在文本中从下至上搜索该字符串/字符串在文本中从上至下搜索该字符串配置主机名称为了便于在局域网中查找某台特定的主机,或者对主机进行区分,除了要有IP地址,还要为主机配置一个主机名称,主机之间可以通过这个类似于域名的名称相互访问。在Linux操作系统中,主机名称大多保存在/etc/hostname文件中,接下来将/etc/hostname文件的内容修改为“”,步骤如下。第1步:使用【vim/etc/hostname】命令修改主机名称文件。第2步:把原始主机名称删除后追加“”。注意,使用Vim编辑器修改主机名称文件后,要在末行模式下执行【:wq!】命令后才能保存并退出文档。第3步:保存并退出文档,然后使用【hostname】命令检查是否修改成功。注意:hostname命令用于查看当前的主机名称,但有时改变主机名称后,新的主机名称不会立即同步到系统中,所以如果发现修改完主机名称后仍显示原来的主机名称,可以重启虚拟机后再次查看,或者先使用【hostname】命令后再使用【exit】命令退出系统,重新登录可以使主机名称的修改及时生效。配置IP地址配置IP地址是否正确是两台服务器能否相互通信的前提。在Linux操作系统中,一切都是文件,因此配置网络服务的工作其实就是在编辑网卡配置文件,此任务不仅可以帮助读者练习使用Vim编辑器,而且能为读者之后学习Linux操作系统中的各种服务配置打下坚实的基础。如果读者具备一定的运维经验或熟悉早期的Linux操作系统,则在学习本书时会遇到一些很难接受的差异变化。在CentOS5、CentOS6中,网卡配置文件的前缀为eth,第1块网卡为eth0,第2块网卡为eth1,以此类推。而在CentOS7中,网卡配置文件则以ifcfg为前缀,加上网卡名称共同组成网卡配置文件的名称,如ifcfg-ens33。在CentOS7中,第一块网卡配置文件名称为ifcfg-ens33,第二块网卡配置文件名称为ifcfg-ens34,好在除文件名称有所变化外,其他并没有很大的区别。配置IP地址现在有一个名称为ifcfg-ens33的网卡设备,将其配置为开机启动,并且IP地址、子网、网关等信息由人工指定,具体步骤如下。第1步:首先使用【cd/etc/sysconfig/network-scripts/】命令切换到存放网卡的配置文件目录中。第2步:使用【vimifcfg-ens33】命令修改网卡文件,逐项写入下面的配置参数并保存退出。每台设备的硬件及架构是不一样的,因此请读者使用ifconfig命令自行确认各自网卡的默认名称。ifcfg-ens33文件内容如下。TYPE=Ethernet #设备类型BOOTPROTO=static #地址分配模式NAME=ens33 #网卡名称ONBOOT=yes #是否启动IPADDR=88 #IP地址NETMASK= #子网掩码GATEWAY= #默认网关地址DNS1= #DNS1地址第3步:使用【systemctlrestartnetwork】命令重启网络服务,通过【ping88】命令测试网络能否连通。由于在Linux操作系统中,ping命令不会自动终止,所以需要手动按下“Ctrl+C”组合键来强行结束进程。yum软件仓库尽管RPM软件包管理器能够帮助用户查询软件的依赖关系,但问题还是要运维人员自己解决的,有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会非常复杂。yum软件仓库便是为了进一步降低软件的安装难度和复杂度而设计的技术。yum(YellowdogUpdaterModified)软件仓库是一个在Fedora、RedHat及CentOS中的Shell前端软件包管理器。基于RPM软件包管理,能够从指定的服务器自动下载RPM软件包并安装,可以自动处理依赖关系,并一次性安装所有有依赖关系的软件包,无须烦琐地一次次下载、安装。yum软件仓库的关键之处是要有可靠的repository,即软件仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含RPM的header,header包括了RPM软件包的各种信息,包括描述、功能、提供的文件、依赖关系等。只有收集了这些header并加以分析,才能自动化地完成余下的任务。常见的yum命令命

令作

用yumrepolistall列出所有仓库yumlistall列出仓库中所有软件包yuminfo软件包名称查看软件包信息yuminstall软件包名称安装软件包yumreinstall软件包名称重新安装软件包yumupdate软件包名称升级软件包yumremove软件包名称移除软件包yumcleanall清除所有仓库缓存yumcheck-update检查可更新的软件包yumgrouplist查看系统中已经安装的软件包组yumgroupinstall软件包组安装指定的软件包组yumgroupremove软件包组移除指定的软件包组配置yum软件仓库第1步:使用【cd/etc/yum.repos.d/】命令进入yum软件仓库的配置文件目录。第2步:备份默认yum配置文件,在修改配置文件之前,先备份要修改的文件,养成好的习惯。【ls】会看到CentOS中默认的7个以repo为后缀的配置文件。【mkdirbak】建立备份文件夹。【mvCent*/etc/yum.repos.d/bak/】将原有的配置文件移动到备份文件夹中。第3步:使用【vimCentOS7.repo】命令创建一个名为CentOS7.repo的新配置文件(新建的文件必须以.repo为后缀,名称可以随意取),逐项写入以下配置参数并保存退出(不要写入后面的中文注释)。

[rhel-media] #yum软件仓库唯一标识符,避免与其他仓库冲突。name=linux-yhy #yum软件仓库的名称描述,易于识别仓库用处。baseurl=file:///mnt/ #提供的方式包括FTP(ftp://..)、HTTP(http://..)、本地(file:///..)。enabled=1 #设置此源是否可用,1为可用,0为禁用。gpgcheck=0 #设置此源是否校验文件,1为校验,0为不校验。#若上面参数开启校验,那么请指定公钥文件地址。gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release第4步:按配置参数的路径挂载光盘,使用【mount

/dev/cdrom

/mnt】命令。挂载成功后可以通过【ls/mnt/】命令在/mnt目录下看到光盘中的文件。第5步:使用【yumlist】命令查看当前的yum源。第6步:使用【yuminstallhttpd-y】命令检查yum软件仓库是否已经可用。使用yum软件仓库来安装Web服务,出现Complete!,则代表配置正确。使用【yumremove-yhttpd】命令可以卸载刚刚安装的httpd软件包。2编写Shell脚本Shell终端解释器可以将Shell终端解释器当作人与计算机硬件之间的“翻译官”,它作为用户与Linux操作系统内部的通信媒介,除了能够支持各种变量与参数,还能提供诸如循环、分支等高级编程语言才有的控制结构特性。要想正确使用Shell脚本中的这些结构特性,准确下达命令尤为重要。Shell脚本命令的工作方式有两种:交互式和批处理。• 交互式(Interactive):用户每输入一条命令就立即执行。• 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。在Shell脚本中不仅会用到前面学习过的很多Linux命令、正则表达式、管道命令符、重定向等语法规则,还需要把内部功能模块化后通过逻辑语句进行处理,最终形成日常所见的Shell脚本。查看Shell变量可以发现当前系统已经默认使用Bash作为命令行终端解释器了。【echo$SHELL】编写简单的Shell脚本有关Shell脚本的描述比较复杂。但是,上面介绍指的是一个高级Shell脚本的编写原则,其实使用Vim编辑器把Linux命令按照顺序依次写入一个文件,就是一个简单的Shell脚本。例如,如果想查看当前所在的工作路径并列出当前目录下所有的文件及属性信息,实现这个功能的脚本如下。【vimexample.sh】新建example.sh脚本文件,输入如下内容:#!/bin/bash#BYYHYpwdls-alShell脚本文件的名称可以任意设置,但为了避免Shell脚本文件被误认为普通文件,建议在文件后加上.sh后缀,以表示它是一个脚本文件。在上述的example.sh脚本文件中实际上出现了三种不同的元素:第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,使得用户或他人在日后看到这个脚本的内容时,可以快速知道该脚本的作用及一些警告信息;第三、四行的可执行语句就是平时执行的Linux命令了。执行上述命令的结果如下。【bashexample.sh】编写简单的Shell脚本除了前面用Bash解释器直接运行Shell脚本文件,还可以通过输入完整路径的方式来运行脚本文件。但默认会因为权限不足而提示报错信息,此时只需要为脚本文件增加执行权限即可。初次学习Linux操作系统的读者不用心急,在学习完下一章的用户身份和权限后再来做这个实验也不迟。【./example.sh】弹出“bash:./Example.sh:Permissiondenied”的未执行提示。【chmodu+xexample.sh】修改文件权限,为脚本文件增加执行权限。【./example.sh】正常执行。为了让Shell脚本程序更好地满足用户的一些实时需求,以便灵活地完成工作,必须要让脚本程序能够像之前执行命令时那样,接收用户输入的参数。其实,Linux操作系统中的Shell脚本语言已经内设了用于接收参数的变量,变量之间可以使用空格间隔。例如,$0对应的是当前Shell脚本程序的名称,$#对应的是共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1、$2、$3……则分别对应第N个位置的参数值。下面将通过引用上述变量参数来查看真实效果。【vimexample.sh】打开example.sh文件,输入如下内容:#!/bin/bashecho"当前脚本名称为$0"echo"总共有$#个参数,分别是$*。"echo"第1个参数为$1,第5个为$5。"【shexample.shonetwothreefourfivesix】给出参数,运行脚本,查看结果,如图所示。接收用户输入的参数判断用户的参数Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则返回其他随机数值。条件测试语法的执行格式为【[条件表达式]】。需要注意的是条件表达式两边均有一个空格。按照测试对象来划分,条件测试语句可以分为4种:•文件测试语句。•逻辑测试语句。•整数值比较语句。•字符串比较语句。3流程控制语句if条件测试语句if条件测试语句可以让脚本根据实际情况自动执行相应的命令。从技术角度来讲,if语句分为单分支结构、双分支结构、多分支结构,其复杂度随着灵活度的提高而提高。if条件测试语句的单分支结构由if、then、fi关键词组成,而且只在条件成立后才执行默认的命令,相当于口语的“如果……那么……”。单分支结构的if条件测试语句属于最简单的条件判断结构,语法格式如下:if条件测试

then命令fi下面使用单分支的if条件测试语句来判断/home/yhy目录是否存在,若存在就结束条件判断和整个Shell脚本,反之则去创建此目录。【vimmkyhy.sh】新建mkyhy.sh文件,输入以下内容:#!/bin/bashDIR="/home/yhy"if[!-e$DIR]thenmkdir-p$DIRfi由于在后面的章节中才会讲解用户身份与权限,所以这里继续用【bash脚本名称】的方式来执行脚本。在正常情况下,顺利执行完脚本文件后没有任何输出信息,但是可以使用ls命令验证/home/yhy目录是否已经创建成功:【bashmkyhy.sh】【ls-d/home/yhy】返回“/home/yhy”值if条件测试语句if条件测试语句的双分支结构由if、then、else、fi关键词组成,它进行一次条件匹配判断,如果与条件匹配,则去执行相应的默认命令;反之则去执行不匹配时的默认命令,相当于口语的“如果……那么……或者……那么……”。if条件语句的双分支结构也是一种很简单的判断结构,语法格式如下:if条件测试

then命令序列1else命令序列2Fi下面使用双分支结构的if条件测试语句来验证某台主机是否在线,然后根据返回值的结果,显示主机在线或不在线的信息。这里的脚本主要使用ping命令来测试与对方主机的网络联通性,Linux操作系统中的ping命令不像Windows操作系统中的ping命令一样,尝试4次就结束了,因此为了避免用户等待时间过长,需要通过-c参数来规定尝试的次数,通过-i参数定义每个数据包的发送间隔,并使用-W参数定义等待超时时间。【vimchkhost.sh】新建“chkhost.sh”文件,输入以下内容:#!/bin/bashping-c3-i0.2-W3$1&>/dev/nullif[$?-eq0]thenecho"Host$1isOn-line."elseecho"Host$1isOff-line."fifor条件循环语句for条件循环语句允许脚本一次性读取多个信息,然后逐一对信息进行处理,当要处理的数据有范围限制时,非常适合使用for条件循环语句。for条件循环语句的语法格式如下。for变量名in取值列表do

命令序列done下面使用for条件循环语句从列表文件中读取多个用户名称,然后为其逐一创建账户并设置密码。首先创建用户名称的列表文件users.txt,每个用户名称单独一行。读者可以自行决定具体的用户名称和个数:

【vim

users.txt】zhangsanlisiwangwuyhyyangboshiwhile条件循环语句while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for条件循环语句中有目标、有范围的使用场景。while条件循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,若条件为假就结束循环。while条件循环语句的语法格式如下:while条件测试do

命令序列donecase条件测试语句case条件测试语句和C语言的中switch语句的功能很相似。case条件测试语句在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;若数据不在所列出的范围内,则去执行星号(*)中所定义的默认命令。case条件测试语句的语法结构如下。case变量值in

模式1)命令序列1

;;模式2)命令序列2;;……*)默认命令序列esac4计划任务服务程序计划任务经验丰富的服务器运维管理工程师可以使Linux操作系统在无须人为介入的情况下,在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。接下来讲解如何设置服务器的计划任务服务程序,把周期性、规律性的工作交给系统自动完成。计划任务分为一次性计划任务与长期性计划任务。一次性计划任务:今晚11点30分开启网站服务。长期性计划任务:每周一的凌晨3:25把/home/wwwroot目录打包备份为backup.tar.gz。计划任务顾名思义,一次性计划任务只执行一次,一般用于满足临时的工作需求。可以用at命令实现这种功能,只需要写成【at时间】的形式就可以。如果想要查看已设置好但还未执行的

一次性计划任务,可以使用【at-l】命令;要想将其删除,可以用【atrm】任务序号。在使用at命令设置一次性计划任务时,默认采用的是交互式方法。例如,使用下述命令将系统设置为在今晚23:30自动重启网站服务。【at

23:30】

at

>

systemctl

restart

httpdat

>

此处请同时按下Ctrl

+

D组合键来结束编写计划任务job

3

at

Mon

Apr

27

23:30:00

2017【at

-l】3

Mon

Apr

27

23:30:00

2017

a

root计划任务如果读者想挑战一下难度更大但更加简捷的方式,可以把前面学习的管道命令符(任意门)放在两条命令之间,让at命令接收前面echo命令的输出信息,以达到通过非交互式的方式创建一次性计划任务的目的。【echo"systemctlrestarthttpd"|at23:30】【at-l】如果不小心设置了两个一次性计划任务,可以使用下面的命令删除其中一个。【atrm3】【at-l】周期任务如果希望Linux操作系统能够周期性地、有规律地执行某些具体的任务,那么Linux操作系统中默认启用的crond服务简直再适合不过了。创建、编辑计划任务的命令为【crontab-e】,查看当前计划任务的命令为【crontab-l】,删除某条计划任务的命令为【crontab-r】。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论