LINUX学习笔记(三)------Vim编辑器与Shell命令脚本(重点)

Vim编辑器与Shell命令脚本(重点)

补充内容

文件:/dev/null 黑洞文件,相当于Linux中的清空站

执行命令,返回执行结果:反引号 命令 反引号、$ ( 命令 )

取值:$变量 读取变量的值

Vim文本编辑器

通过Vim打开的文本颜色鲜明

命令模式:搜索、复制、粘贴、替换、删除 切换桥梁 使用a、i、o(为下一行)来从命令模式切换到输入模式

输入模式:Windows记事本,随意编辑的编辑环境 使用ESC则可以从输入模式下变成命令模式

末行模式:保存、退出、设置编辑环境

Vim中常用的命令

在命令模式下

dd 删除(剪切)光标所在行

5dd 删除(剪切)光标所在的前5行

yy 复制光标所在行

5yy 复制从光标处开始的5行

n 显示搜索命令定位到下一个字符串

N 显示搜索命令定位到上一个字符串

u 撤销上一步的操作

p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

末行模式中可用的命令

: w 保存

q 退出

q! 强制退出(放弃对文档的修改内容)

wq! 强制保存退出

set nu 显示行号

set nonu 不显示行号

命令 执行该命令

整数 跳转到该行

配置Yum软件仓库

新建一个文件

第一步:vim [文件名]+后缀 .repo

第二步:编辑文件

[] []中写文件名

name= 文件描述

baseurl= 路径

gpgcheck= 是否进行校验写0

enabled= 是否启用

~
~
~
:wq!

先再按ESC进入命令模式,再写:wq!末行模式下保存并退出

shell命令脚本

脚本名称

脚本注释

脚本命令

以上三个是脚本的重要组成部分

写脚本

第一步:vim [文件名]+后缀 .sh

第二步:写内容

格式:

#!/bin/bush 脚本的声明

#(脚本的注释,可以随便写)

xxxxxx 写脚本的命令

~
~
~
:wq!

先再按ESC进入命令模式,再写:wq!末行模式下保存并退出

运行脚本

直接bash + 脚本名.sh

接收用户的参数

见书4.2.2

判断用户的参数

测试语句格式:[ 条件表达式 ] —括号两边均有一个空格

逻辑操作符:

&& 当前面命令执行成功时,执行后面的命令

|| 当前面命令执行失败时,执行后面的命令

! 取反值

文件测试所用的参数

-d 测试文件是否为目录类型

-e 测试文件是否存在

-f 判断是否为一般文件

-r 测试当前用户是否有权限读取

-w 测试当前用户是否有权限写入

-x 测试当前用户是否有权限执行

例一:

[xxx]# [ -d /etc ]

[xxx]# echo $?

0 则证明是条件成立,是一个目录

[xxx]# [ -d /etc/ususu ]

[xxx]# echo $?

1 则证明是条件不成立,不是一个目录

例二:

[xxx]# [ -d /etc ] && echo “OK” 判断是否为一个目录,如果是的话就输出OK

OK

[xxx]# [ -d /etc/sadsd ] && echo “OK” || echo “NONONO”

NONONO

[xxx]# [ ! -d /etc ] 判断是否为一个目录,结果为真 输出0,再取反 输出1

[xxx]# echo $?

1

可用的整数比较运算符(切记不要使用大于号等符号)

-eq 是否等于

-ne 是否不等于

-gt 是否大于

-lt 是否小于

-le 是否等于或小于

-ge 是否大于或等于

常见的字符串比较运算符

= 比较字符串内容是否相同

!= 比较字符串内容是否不同

-z 判断字符串内容是否为空

例三:

[xxx]# [ -z $PRICE ] 判断这个变量是否为空

[xxx]# echo $?

0

if条件测试语句 (if fi)

例四:编写脚本

#!/bin/bash

if [ ! -e /media/haha ] (如果这个文件不存在,则执行下面的任务)

then

​ mkdir -p /media/haha

fi

~
~
~
:wq!

for条件循环语句 (do done)

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

例5:编写脚本

#!/bin/bash

for IP in `cat ip.txt ’ (为反引号) 先执行cat ip.txt文件,然后获取多个IP地址的值,循环读取

do

​ ping -c 3 -i 0.2 -w 3 $IP &> /dev/null 把读出的地址全部清空,显得界面整洁

​ if [ $? -eq 0 ] ; then 判断IP地址是否存在

​ echo “$IP is On-line”

​ else

​ echo “$IP is Off-line”

​ fi

done

~
~
~
:wq!

while条件循环语句

while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,

完全不同于for循环语句中有目标、有范围的使用场景。while循环语句通过判段条件测试的真假来决定是否继续执行命令,

若条件为真就继续执行,为假就结束循环。

例六:编写脚本

#!/bin/bash

PRICE=$(expr $RANDOM % 1000) 确保生成的随机数是小于1000的

TIMES=0 定义一个次数变量初始值为0

while true 无线循环直到为真

do

​ read -p "Enter: " INT 再定义一个变量INT,读取输入值

​ let Times++ 每读一次,次数+1、

​ if [ $INT -eq $PRICE ] ; then 如果输入值和生成值一致,则结束,并显示次数

​ echo “Congratulation,$TIMES”

​ exit 退出循环

​ elif [ $INT -gt $PRICE ] ; then 如果输入值高于生成值,则显示为高

​ echo “HIGH”

​ else 如果输入值低于生成值,则显示为 低

​ echo “LOW”

​ fi

done

~
~
~
:wq!

case条件测试语句 (case esac)

case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试,而如果数据不在所列出的范围内,则执行星号(*)中所对应的默认命令

例七:编写脚本

#!/bin/bash

read -p "Enter: " KEY 读取一个输入的变量

case “$KEY” in 判断输入值是属于哪种值

​ [ a - z ] | [ A - Z ] ) *记住只有一个右括号

​ echo “zimu”

​ ; ;

​ [ 0 - 9 ] )

​ echo “shuzi”

​ ; ;

​ * ) 相当于else

​ echo “luanma”

​ ; ;

esac

~
~
~
:wq!

计划任务服务程序

at 一次性

crond 周期性

at格式

[xxx]# at 20:20 写时间

xxxxxxxxxxxx

at> reboot 在at>后面写命令,按下回车后继续出一个at>,把想做的事情一件一件写好,如果都写好了就按ctrl + d结束保存

可以使用

[xxx]# at -l 查看计划任务的时间

[xxx]# at -c 1 到最后来查看计划任务的内容

[xxx]# atrm 1 删除计划任务

crond格式

crond 服务名称 重启服务时使用的是服务名称

crontab 工具名称 配置时使用

第六节课1:20分有例子

格式:

[xxx]# crontab -e 编辑自己的计划任务 (-u 编辑其他人的计划任务)

分 时 日 月 星期 命令(没有值就用*来做占位)

*命令不能直接使用,要用由路径+命令来执行 可以使用[xxx]# whereis 命令 来查找命令路径

*查看crond的服务状态,要确保他是active(running)启动的

[xxx]# systemctl restart crond 重启一下

[xxx]# systemctl enable crond 再加入启动状态中启用,二次确认

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值