在Linux系统中一切都是文件,而配置一个服务器就是在修改其配置文件的参数。而且在日常工作中大家也肯定免不了要编写文档,这些工作都是通过文本编辑器来完成的。
Vim之所以能得到广大厂商与用于的认可,原因在于Vim编辑器中设置了三种模式——命令模式,末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。
命令模式:控制光标移动,可对文本进行复制,粘贴,删除和查找等工作。
输入模式:正常的文本录入。
末行模式:保存或退出文档,以及设置编辑环境。
Vim编辑器模式的切换方法
在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编辑工作,而每次在编写完文档后需要先返回命令模式,然后在进入末行模式,执行文档的保存或退出操作。在Vim中,无法直接从输入模式切换到末行模式。
Vim中常用的命令
命令 作用
dd 删除(剪切)光变所在整行
5dd 删除(剪切)从光标处开始的5行
yy 复制光标所在整行
5yy 复制从光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式中输入一个冒号就可以了。
末行模式中可用的命令
命令 作用
: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
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串
编写shell脚本
可以将shell终端解释器当作人与计算机硬件之间的 “翻译官”,它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环,分支等高级编程语言才有的控制结构特性。想要正确使用shell中的这些功能特性,准确下达命令尤为重要。shell脚本命令的工作方式有两种:交互式和批处理。
交互式:用户每输入一条命令就立即执行
批处理: 由用户事先编写好一个完整的shell脚本,shell会一次性执行脚本中诸多的命令。
在shell脚本中不仅会用到前面学习过的很多Linux命令以及正则表达式,管道符,数据流重定向的语法规则,还需要把内部功能模块化后通过逻辑语句进行处理,最终形成日常所见的shell脚本。
编写简单的脚本
在看完上文中有关shell脚本的复杂描述后。但是,上文指的是一个高级shell脚本的编写原则,其实使用Vim编辑器把Linux命令按照顺序依次写入到一个文件中,这就是一个简单的脚本了。
shell脚本文件的名称可以任意,但为了避免被误以为是普通文件,建议将.sh后缀加上,以表示是一个脚本文件。脚本中实际上出现三种不同的元素:第一行的脚本声明(#!)用来告诉系统使用那种shell解释器来执行该脚本;第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,是自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息;第三,四行的可执行语句也就是我们平时执行的Linux命令了。
接受用于的参数
像上面这样的脚本程序只能执行一些预先定义好的功能,未免太过死板了。为了让shell脚本程序更好地满足用户的一些实时需求,以便灵活完成工作,必须要让脚本程序能够像之前执行命令时那样,接收用户输入的参数。
其实,Linux系统中的shell脚本语言早就考虑到了这些,已经内设了用于接收参数的变量,变量之间可以使用空格间隔。例如$0对应的是当前shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1,$2,$3.......则分别对应着第N个位置的参数值。
2020-09-22 17:09:19