Linux学习笔记——Vim与Shell

这两天在实训Linux,特此做一下笔记防止遗忘,参考刘老师的《Linux就该这么学》

一、Vim文本编辑器

1.引入

“在Linux中一切都是文件,配置一个服务就是在修改其配置文件的参数。”

而我们在日常的Linux运维过程中,就需要编辑各种各样的文件,所以,这就少不了一款强大的文本编辑器,而在CentOS中,已经为我们默认安装好了Vim,我们可以通过他来回文档进行编辑。

1.1Vim编辑器中的三种模式

  • 命令模式:控制光标移动,可对文本尽心复制、粘贴、删除和查找等工作。
  • 输入模式:可以进行正常的文本录入。
  • 末行模式:可以保存或退出文档,以及设置编辑环境。

Linux学习笔记——Vim与Shell_第1张图片
在每次运行Vim时,默认首先进入命令模式,此时就需要切换到输入模式后再对文档进行编写工作,而在每次编写完文档后需要先返回命令模式,然后再进入末行模式执行文件的保存或退出操作。

1.2基本命令

(1)命令模式下常用的命令

命令 作用
dd 删除(剪切)整行
5dd 删除(剪切)从光标开始的5行
yy 复制光标所在的行
5yy 复制光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

(2)末行模式中可用的命令

命令 作用
:w 保存
:q 退出
:q! 强制退出(放弃修改)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
: 命令 执行该命令
:整数 跳转到该行
?字符串 在文本中从上至下搜索该字符串
/字符串 在文本中从下至上搜索该字符串

2.实践

我们这里模拟一个需求,创建一个practice.txt文件并在里面输入Hello World后保存退出。

(1)首先进入到文件,这里如果没有对应文件,Vim就会创建一个临时文件:

进入文件

(2)三个选择

  • a:在光标后一位切换到输入模式
  • i:在光标当前位置切换到输入模式
  • o:在光标下面新建一个空行
    我们输入a切换到输入模式
    Linux学习笔记——Vim与Shell_第2张图片

(3)保存并退出文件

因为此时我们正处于输入模式,所以要先按ESC推出道末行模式并输入:wq保存并退出文件
Linux学习笔记——Vim与Shell_第3张图片
如果我们想要继续编辑这个文件,就可以直接按o创建新行,这样更高效。


二、编写Shell脚本

2.1Shell的工作方式

  • 交互式:用户没输入一行就立即执行。
  • 批处理:用户实现编写好一个完整的Shell脚本,Shell会一次性执行脚本中的所有命令。

2.2示例引入

(1)脚本文件

我们首先用之前讲到的Vim编辑器创建一个脚本文件example.sh

(2)编辑信息

让这个脚本可以打印出我们当前所在的目录以及输出此目录下的文件
如图

  • 第一行是脚本声明(#!)用来高速系统使用哪种Shell解释器来执行该脚本(默认使用Bash)
  • 第三四行是执行的Linux命令
  • 在这里我们还可以用 #注释 的形式书写注释

(3)用bash解释器来运行

Linux学习笔记——Vim与Shell_第4张图片
在这里,我们也可以不用bash解释器直接运行Shell脚本文件,而可以通过输入完整路径的方式来执行,但是肯能会出现权限不足的情况,这里就需要为脚本文件增加执行权限。
Linux学习笔记——Vim与Shell_第5张图片

2.2接收用户参数

看一个例子
Linux学习笔记——Vim与Shell_第6张图片

结果

可以看出我们的Shell 是可以接收用户参数的,这提高了程序的灵活性

2.3用户参数的判断

2.3.1 条件测试语句的分类

  • 文件测试语句
  • 逻辑测试语句
  • 整数值比较语句
  • 字符串比较语句

格式: [ 条件表达式 ] 注意两边都有空格

2.3.2 常用参数

(1)文件测试所用参数
命令 作用
-d 测试文件是否为目录文件
-e 测试文件是否存在
-f 测试是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行

看一个例子,判断是否存在/etc/fatab下是否为一个目录型的文件,返回值为0则代表目录存在,如果饭时非零的值则目录不存在
例子

(2)逻辑语句

&& : 与,标识当前命令执行成功后才会执行他后面的命令
|| : 或,标识当前面的命令执行失败后才会执行他后面的命令
!  : 非,取反

这里看一个综合例子,注意空格
例子
由于当前登陆的账户是root,这个语句的逻辑也就是:
如果当前用户不是root,那么就会输出user,是root,就会输出root;

假如第一个语句判断为真,也就是说当前用户不是root,那么[ ]中的值就会为真,就会执行后面的 && echo “user”,如果当前用户是root,那么[ ] && echo "user"这整个聚在就会被判断成假,则会执行 || echo "root"语句输出root。

(3)整数比较运算符

命令 作用
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于

例子
例子
例子

(4)常见字符串比较运算符

命令 作用
= 字符串内容是否相等
!= 字符串内容是否不同
-z 字符串内容是否为空

例子
例子


2.4流程控制语句

2.4.1 if语句

(1) 格式

//单分支的if语句
if 条件测试语句
	then 命令序列
fi

//多分支的if语句
if 条件测试操作1
	then 命令序列1
elif 条件测试操作2
	then 命令序列2
else
	命令序列3
fi

(2) 示例

Linux学习笔记——Vim与Shell_第7张图片
Linux学习笔记——Vim与Shell_第8张图片

2.4.2 for语句

(1) 格式

for 变量名 in 取值列表
do
	命令序列
done

(2) 示例

1.创建users.txt

Linux学习笔记——Vim与Shell_第9张图片

2.编辑Example.sh脚本文件

Linux学习笔记——Vim与Shell_第10张图片

3.执行文件

Linux学习笔记——Vim与Shell_第11张图片

再来一个for循环计算1加到100的值
Linux学习笔记——Vim与Shell_第12张图片

2.4.3while循环

(1)格式

while 条件测试语句
do
	命令列表
done

(2)例子:猜数字

while.sh文件
Linux学习笔记——Vim与Shell_第13张图片

2.4.4 case条件

(1)格式

case 变量值 in
模式1)
	命令序列1
	;;
模式1)
	命令序列2
	;;
	......
*)
	默认命令序列
esac

(2)例子

用来判断判断用户输入的单个字符是哪种
Linux学习笔记——Vim与Shell_第14张图片

你可能感兴趣的:(随笔记录)