linux 第四章学习


VIM 编辑器


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

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

:切换到末行模式
:w 保存
:q 退出
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
😒/one/two 将当前光标所在行的第一个 one 替换成 two
😒/one/two/g 将当前光标所在行的所有 one 替换成 two
:%s/one/two/g 将全文中的所有 one 替换成 two
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串

二.简单文档编写
创建一个文档 vim practice.txt

进入编写模式 a i o
返回命令模式 ESC

三.编写Shell脚本
例子
[root@linuxprobe ~]# vim example.sh
#!/bin/bash
#For Example BY linuxprobe.com
pwd
ls -al

一般用.sh 表示是脚本文件
第一行#!告诉系统使用那种SHell
第二行的注释信息(#)是对脚本功能和某些命令的介绍信息
第三、四行的可执行语句也就是我们平时执行的 Linux 命令了

四.接收用户的参数

$0 对应的是当前 Shell 脚本程序的名称
$# 对应的是总共有几个参数
$*对应的是所有位置的参数值
$?对应的是显示上一次命令的执行返回值
$1、$2、$3……则分别对应着第 N 个位置的参数值

输入的变量之间可以使用空格间隔
例子
[root@linuxprobe ~]# vim example.sh
#!/bin/bash
echo “当前脚本名称为 0 " e c h o " 总 共 有 0" echo "总共有 0"echo"#个参数,分别是$*。”
echo “第 1 个参数为$1,第 5 个为$5。”
[root@linuxprobe ~]# sh example.sh one two three four five six
当前脚本名称为 example.sh
总共有 6 个参数,分别是 one two three four five six。 第 1 个参数为 one,第 5 个为 five。

五.判断用户的参数

Shell 脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返数字 0,否则便返回其他随机数值。条件测试语法的执行格式如下所示。切记,条件表达式两边均应有一个空格
测试语句格式【空格 条件表达式 空格 】

-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行

下面使用文件测试语句来判断/etc/fstab 是否为一个目录类型的文件,然后通过 Shell 解释器的内设$?变量显示上一条命令执行后的返回值。如果返回值为 0,则目录存在;如果返回值为非零的值,则意味着目录不存在:
[root@linuxprobe ~]# [ -d /etc/Desktop ]
[root@linuxprobe ~]# echo $?
0

逻辑语句用于对测试结果进行逻辑分析,根据测试结果可实现不同的效果
在 Shell终端中逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令
例 【 -e/dev/cdrom 】&& echo “Exist”
逻辑“或”,它在 Linux 系统中的运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令
例子【 -e /dev/cdrom1 】|| echo " Not exist"
第三种逻辑语句是“非”,在 Linux 系统中的运算符号是一个叹号(!)它表示把条件测试中的判断结果取相反值。

整数比较
整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作,而且不能想当然地使用日常生活中的等号、大于号、小于号等来判断。因为等号与赋值命令符冲突,大于号和小于号分别与输出重定向命令符和输入重定向命令符冲突。因此一定要使用规范的整数比较运算符来进行操作。
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于

字符串比较
字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。它经常用来判断某个变量是否未被定义(即内容为空值),理解起来也比较简单。
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 判断字符串内容是否为空

[root@linuxprobe ~]# echo $LANG
en_US.UTF-8
[root@linuxprobe ~]# [ $LANG != “en.US” ] && echo “Not en.US”
Not en.US

六.流程控制语句

一 . if条件测试语句
if 可以分为 单分支结构 双分支结构 多分支结构
单分支结构如下
if 条件测试操作
then 命令序列
fi

例子
if 【 ! -e /cd/ceshi1.txt 】
then touch ling123
fi

双分支结构

if 条件测试语句
then 命令1
else 命令2 (命令1于命令2 只能制行一个)
fi

多分支结构
if 条件测试语句 分数85-100
then 命令1 优秀
elif 条件测试语句 分数70-84
then 命令2 合格
else
命令3 不合格
fi

二.for循环语句

for 循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理,当要处理的数据有范围时,使用 for 循环语句再适合不过了

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

三.while 语句

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

四.case语句

case 条件测试语句和 switch 语句的功能非常相似!case 语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值