Linux系统下 Vim编辑器与shell命令脚本(上) 夜车星繁的博客

开始看白帽子视频;要学的知识浩如烟海。汇编语言博客也一直未执笔,burp suite也在向更高阶的方向去学。在此写一篇Linux基础博客

 

 

 学习总览:

  • Vim文本编辑器
  • 编写Shell脚本
  • 流程控制语句
  • 计划任务服务程序

Vim文本编辑器

Vim的三种模式

  • 命令模式:控制光标,增强对文本的复制、粘贴、删除和查找功能。
  • 编辑模式:文本录入。
  • 末行模式:保存或退出,设置编辑环境。

三种模式的切换如下图:

Vim模式切换

默认进入的就是命令模式,命令模式下的常用命令如下: 

命令作用
dd删除(剪切)光标所在整行
yy复制光标所在整行
u撤销上一步的操作
p将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

保存或退出,需要先进入末行模式。末行模式的常用命令如下:

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

编写Shell脚本

Shell终端解释器可以看做人与计算机硬件之间的“翻译官”,它作为用户与 Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环、分支等高级编程语言才有的控制结构特性。

 

Shell脚本命令的工作方式有两种:

  • 交互式:用户每输入一条命令立即执行;
  • 批处理:用户事先编写好一个完整的Shell脚本,Shell一次性执行其中的所有命令。

编写一个简单的Shell脚本

执行如下命令:

# 用Vim文本编辑器,新建一个learnshell1.sh文件
vim learnshell1.sh
# 定义其内容如下:

#!/bin/bash
# this is a shell script
pwd
ls -a -l

# 保存退出后,执行该脚本的两种方式
# 方式一:直接bash解释器执行该脚本
bash learnshell1.sh
# 方式二:先授权,再执行该脚本
chmod u+x learnshell1.sh
./learnshell1.sh

该命令的效果图如下:

执行简单脚本

Shell脚本是如何接收参数的

执行如下命令:

# 用Vim文本编辑器,新建一个learnshell2.sh文件
vim learnshell2.sh
# 定义其内容如下:

#!/bin/bash
# this is a shell script to learn how to use variable
echo "当前脚步名称为$0"
echo "总共传进来的变量个数为$#。"
echo "它们分别是$*。"
echo "第二个变量为$2,第五个变量为$5。"

# 保存退出后,通过如下方式执行脚本
bash learnshell2.sh one two three four five six

该命令的效果图如下:

脚本使用参数

通过效果图,可以看出:$n,就是脚本获取命令中输入的第n个参数。$0即第0个参数就是脚本的名称,$#是获取命令中有多少个参数,$*是一次性获取所有的参数。

判断用户输入的参数

Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字 0,否则便返回其他随机数值。按测试对象可以分为:

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

文件测试语句

文件测试语句可使用的参数如下:

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

 测试用的命令如下:

# 测试(/home/learnCSPP)是否为目录
[ -d /home/learnCSPP ]
echo $?

# 测试(/home/learnCSPP/hello)是否为普通文件
[ -f /home/learnCSPP/hello ]
echo $?

# 测试(/home/learnCSPP/learnshell1.sh)是否为普通文件
[ -f /home/learnCSPP/learnshell1.sh ]
echo $?

# 测试(/home/learnCSPP/hello)是否有写入权限
[ -w /home/learnCSPP/hello ]
echo $?

# 测试(/home/learnCSPP/learnshell2.sh)是否有执行权限
[ -x /home/learnCSPP/learnshell2.sh ]
echo $?

# 测试(/home/learnCSPP/test)是否为目录
[ -d /home/learnCSPP/test ]
echo $?

 

该命令的效果如下:

文件测试

逻辑测试语句

    逻辑语句用于对测试结果进行逻辑分析,根据测试结果可实现不同的效果。逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令;逻辑“或”的运算符号是||,它表示当前面的命令执行失败后才会执行它后面的命令;逻辑“非”的运算符号是!,把条件测试中的判断结果取相反值。

# 如果hello是一个可执行文件,就在终端打印echo中的内容
[ -x hello ] && echo "hello 是一个可执行文件"

# 如果test是一个目录,就在终端打印echo中的内容
[ -d test ] && echo "test 不是一个目录"

# 如果test不是一个目录,就在终端打印echo中的内容
[ -d test ] || echo "test 不是一个目录"

# 如果test不是一个目录,就在终端打印echo中的内容
[ ! -d test ] && echo "一个结果为错误的命令,逻辑非后,即该命令是正确的。所以紧随其后逻辑与的命令会执行"

该命令的效果如下:

逻辑语句

整数值比较语句

可用的整数比较符号如下:

运算符作用
-eq是否等于
-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于

 

测试用的命令如下:

 

# 如果参数1(10)等于参数2(10)为真,就在终端打印echo后的内容
[ 10 -eq 10 ] && echo "10等于10"

# 如果参数1(10)大于参数2(10)为真,就在终端打印echo后的内容
[ 10 -gt 8 ] && echo "10大于8"

# 如果参数1(10)小于参数2(8)为假,就在终端打印echo后的内容
[ 10 -lt 8 ] || echo "10小于8"

该命令的效果如下:

整数值比较

字符串比较语句

常见的字符串比较运算符如下:

运算符作用
=比较字符串是否相同
!=比较字符串是否不同
-z判断字符串是否为空

测试用的命令如下:

# 定义了变量STR,其值为abc
STR="abc"

# 如果变量STR的值为abc,就在终端打印echo后的内容
[ $STR = "abc" ] && echo "变量STR的值为abc"

# 如果变量STR的值不为cba,就在终端打印echo后的内容
[ $STR = "cba" ] || echo "变量STR的值为cba"

# 如果变量STR不为空,就在终端打印echo后的内容
[ -z $STR ] || echo "变量STR不为空"

该命令的效果如下:

字符串比较

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值