vim编辑器与shell命令脚本
???1、vim编辑器
??????我想大家都应该听说过一句话:Linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数。好了没听过现在知道这一句话了。接下来有请我们修改配置文件所用的工具:vim编辑器。
??????vim有三种工作模式:命令模式、输入模式、末行模式。
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作
输入模式:正常的文本录入
末行模式:保存或退出文档,以及设置编辑环境。
??????在每次运行vm编辑器时,默认进入命令模式。根据上图可以知晓,命令模式可以切换到输入模式和末行模式,末行模式或输入模式也可以切换到命令模式。但是输入模式不能直接切换到末行模式。
命令模式常用的命令
命令 | 作用 |
---|---|
dd | 删除(剪切)光标所在整行 |
Ndd | 删除(剪切)从光标开始的N行 |
yy | 复制光标所在整行 |
Nyy | 复制从光标开始的N行 |
n | 显示搜索定位到的下一个字符 |
N | 显示搜索定位到的上一个字符 |
u | 撤销上一步的操作 |
p | 将之前删除(dd)或者复制(yy)过的数据粘贴到光标后面 |
末行模式中可用的命令
命令 | 作用 |
---|---|
:w | 保存 |
:q | 退出 |
:q! | 强制退出 |
:wq! | 强制保存退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:命令 | 执行该命令 |
:整数 | 跳转到改行 |
: s/one/two | 将光标所在行的第一个one替换成two |
: s/one/two/g | 将光标所在行的所有one替换成two |
:%s/one/two/g | 将全文中的所有one替换成two |
?字符串 | 在文本中从下至上搜索该字符串 |
/字符串 | 在文本中从上到下搜索该字符串 |
??????注:冒号+s会触发小表情,我在中间加了空格
??????vim确实对新手不是很友好,但是熟悉操作后对于工作效率有很大的帮助。
??????我们创建一个简单的文档。在基本Linux命令(1)中有对touch的记录,可以知道touch就可以创建文档。vim编辑器也是支持创建文档的:vim 文档名
。并且我们会自动进入该文档的命令模式,如果使用touch命令创建文档,我们只会创建一个文档还需要使用命令或者vim对其进行操作。
??????从第一张截图上可以知道从命令模式进入输入模式可以按a、i、o三个按键。a与i键相差不多,都是在光标处进入输入模式,o键则是在光标所在行的下方创建一个新的空白行并在空白行处进入输入模式。
??????当我们修改了文件内容却没有保存而直接退出时,vim会拒绝我们的操作,此时我们需要使用强制操作,同时强制符号“!”必须放在末尾,不然无法生效。
??????明白上述内容的时候我们就可以简单的对文档进行修改。我们还需要对一些实践经验来证实vim的功能。
??????1.1 修改主机名称
??????主机名保存在etc目录下的hostname文件内。
- 使用vim编辑器进行修改“/etc/hostname”主机名称文件。
- 把原始主机名删除后追加自己想要设置的主机名称。
- 进入末行模式输入":wq!"保存并退出文档,使用hostname命令检查是否修改成功。
??????1.2 配置网卡信息
- 在命令行键入
vim /etc/sysconfig/network-scripts/ifcfg-eno
并按位于CapsLock键上方的tab键自动补全内容。 - 回车进入网卡配置文件。根据自己的实际情况进行修改。以我的网卡信息为例
设备类型:TYPE=Enthernet
地址分配模式:BOOTPROTO=static (static、none、dhcp)
网卡名臣:NAME=eno16777728
是否启动:ONBOOT=yes
IP地址:IPADDR=192.168.80.138
子网掩码:NETMASK=255.255.255.0
网关地址:GATEWAY=182.168.80.2
DNS地址:DNS1=192.168.80.2 - 重启网卡服务并测试网络是否联通(ping +目标ip地址或网址)
??????在ping命令测试网络状况的时候是不会自动终止的,因此我们需要使用ctrl+c
强制终止。我这里ping的是百度,这个shifen是百度名下防黑客的网站。我们只要知道我们能ping通网络就可以。
???2、编写shell脚本
??????shell解释器一直在人和计算机硬件之间充当翻译官的作用,想要正确使用shell中的功能特性就需要我们准确下达命令。shell脚本有两种工作方式:交互式和批处理。
交互式:用户输入每输入一条命令就立即执行
批处理:由用户事先编写好一个完整的脚本,shell会一次执行其中的多条命令
??????2.1编写简单的脚本
??????在开始编写自己的第一个脚本之前,我们先了解一下脚本的基本框架。
脚本声明:#!/bin/bash
脚本注释:#+文字信息
脚本命令:需要的命令/功能
??????可以发现,在编写玩脚本后并没有执行成功,反而提示权限不足。因为我们还么有去学习怎么提升权限,所以我们先使用“解释器 脚本”的格式执行。
??????2.2 接收用户的参数
??????上面的例子只能执行已经事先定义好的功能,有些时候是需要我们人为输入参数的。
变量 | 作用 |
---|---|
$0 | 获取脚本名称 |
$# | 获取输入的脚本参数个数 |
$* | 把输入的参数全部打印 |
$1 | 第一个参数 |
??????2.3 判断用户的参数
??????条件测试语句格式:[ 条件表达式 ]
。
文件测试语句
逻辑测试语句
整数测试语句
字符串测试语句
shell脚本中针织判断和编程是相反的,零为真,非零为假。
文件测试所用的参数
运算符 | 作用 |
---|---|
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断文件是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
逻辑与(&&):A成立则B执行
逻辑或(||):A不成立则B执行
逻辑非(!):!(A成立)即不成立,!(A不成立)即成立
可用的整数比较运算符
运算符 | 作用 |
---|---|
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否小于等于 |
-ge | 是否大于等于 |
常见的字符串比较运算符
运算符 | 作用 |
---|---|
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串是否为空 |
???3、 流程控制语句
??????3.1 单分支测试语句
??????单分支if语句结构:
if 条件测试语句 then 命令序列 fi
??????3.2 双分支测试语句
??????双分支if语句结构:
if 条件测试语句 then 命令序列1 else 命令序列2 fi
read命令可以接收用户输入的信息。-p参数用于输出提示信息。
??????3.3 多分支测试语句
??????多分支if语句结构:
if 条件测试语句1 then 命令序列1 elif 测试语句2 then 命令序列2 else 命令序列3 fi