美文网首页
Vim编辑器与Shell命令脚本

Vim编辑器与Shell命令脚本

作者: 在牛魔角上狂码 | 来源:发表于2018-11-25 23:58 被阅读0次

Vim编辑器


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

image.png

vim命令模式中常用的命令:

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

末行模式中可用的命令:

命令 作用
: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
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串

修改主机名:

vim /etc/hostname
//将原来的主机名删除掉,输入新的主机名
:wq
//保存并退出
hostname
//查看当前的主机名,如果显示还是原来的主机名,则重启系统后再查看
//重启
reboot

配置网卡信息:

//每台设备的硬件和架构不一样,所欲网卡的名称也是不一样,我这里的名称是ifcfg-enp0s3
vim /etc/sysconfig/network-script/ifcfg-enp0s3

TYPE=Ethernet
BOOTPROTO=static
NAME=enp0s3
ONBOOT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=192.168.10.1

//重启网卡
systemctl restart network
//ping新的ip看看是否ping得通
ping 192.168.10.10
//ctrl + c 终止
//查看IP是否修改为新的192.168.10.10
ifconfig

设备类型:TYPE
地址分配模式:BOOTPROTO
网卡名称:NAME
是否启动:ONBOOT
IP地址:IPADDR
子网掩码:NETMASK
网关地址:GATEWAY
DNS地址:DNS1

配置Yum软件仓库:

//进入到/etc/yum.repos.d目录中,创建一个名为centos7.repo的新配置文件,文件名称可以随意取,但文件的后缀必须为.repo
vim /etc/yum.repos.d/centos7.repo

[centos7]
name=centos7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

mkdir -p /media/cdrom

mount /dev/cdrom /media/cdrom

vim /etc/fstab

/dev/cdrom /media/cdrom iso9660 default 0 0

yum install httpd

[centos]:Yum软件仓库唯一标识符。避免与其他仓库冲突
name=chase:Yum软件仓库的名称描述,易于识别仓库用处
baseurl=file:///media/cdrom:提供的方式包括FTP(ftp://...)、HTTP(http://...)、本地(file://...)
enabled=1:设置此源是否可用;1为可用、0为禁用
gpgcheck=1:设置此源是否为校验文件;1为校验、0为不校验
gppkey=file:///media/cdrom/PRM-GPG-KEY-redhat-release:若上面参数开启校验,那么请指定公钥文件地址

image.png

编写Shell脚本


shell脚本的工作方式有两种:交互式和批处理
交互式:用户每输入一条命令就立即执行
批处理:由用户事先编写好一个完整的shell脚本,shell会一次性执行脚本中诸多命令

执行脚本:
1、使用bash命令

bash example.sh

2、通过输入完整路径的方式来执行

image.png

shell脚本通过接受参数来灵活工作
$#:总共有几个参数
$*:对应所在位置的参数值
$?:显示上一次命令的执行返回值
$1、$2、$3...:对应着第N个位置的参数值

vim example.sh
image.png image.png

判断用户输入的参数

条件测试语法的执行格式:[ 条件表达式 ]
注:条件表达式的两边均有一个空格

条件测试语句分为4种:
文件测试语句:使用指定条件来判断文件是否存在或权限是否满足等情况
逻辑测试语句:用户对测试结果进行逻辑分析,根据测试结果可实现不同的效果
整数值比较语句:使用规范的整数比较运算符来对数字进行操作
字符串比较语句:用于判断测试字符串是否为空值

文件测试所用的参数:

运算符 作用
-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
//判断 /etc/fstab 是否为一个目录类型的文件
[ -d /etc/fstab ]
echo $?
//$?显示上一条命令执行后的返回值。返回值为0,表示目录存在;返回值为非零的值,表示目录不存在
1

逻辑语句分运算符:
&&:逻辑与,表示当前面的命令执行成功后才会执行它后面的命令
||:逻辑或,表示当前面的命令执行失败后才会执行它后面的命令
!:逻辑非,表示把条件测试中的判断结果取相反值

可用的整数比较运算符

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

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

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

流程控制语句

if条件测试语句:


image.png
vim mkcdrom.sh

#!/bin/bash
DIR="/media/cdrom"
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi

bash mkcdrom.sh

ls -d /media/cdrom
//显示
/media/cdrom
image.png
vim chkhost.sh

#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "Host $1 is On-line."
else
echo "Host $1 is Off-line."
fi

bash chkhost.sh 192.168.10.10
//显示
Host 192.168.10.10 is On-line.

bash chkhost.sh 192.168.10.20
//显示
Host 192.168.10.20 is Off-line.

-c:规定尝试的次数
-i:定义每个数据包的发送间隔
-W:定义等待超时时间

image.png
vim chkscore.sh

#!/bin/bash
read -p "Enter your score(0-100):" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
echo "$GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then
echo "$GRADE is Pass"
else
echo "$GRADE is Fail" 
fi

bash chkscore.sh
//显示
Enter your score(0-100):88
//显示
88 is Excellent

bash chkscore.sh 
//显示
Enter your score(0-100):80
//显示
80 is Pass

read:用来读取用户输入信息的命令
-p:用于向用户显示一定的提示信息

for条件循环语句


image.png

批量创建用户与设置用户密码:

vim users.txt

andy
sum
zidung

vim Example.sh

#!/bin/bash
read -p "Enter The Users Password : " PASSWD
for UNAME in `cat users.txt`
do
id $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "Already exists"
else
useradd $UNAME &> /dev/null
echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "$UNAME , Create success. The password for $PASSWD"
else
echo "$UNAME , Create failure."
fi
fi
done

bash Example.sh
//显示
Enter The Users Password : 123
//显示
andy, Create success. The password for 123
sum, Create success. The password for 123
zidung, Create success. The password for 123

注:/dev/null 是一个被称作Linux黑洞的文件,把输入信息重定向到这个文件等同删除数据(类似于没有回收功能的垃圾箱)可以让用户的屏幕窗口保持简洁

while条件循环语句

image.png
vim Guess.sh

#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true
do
read -p "请输入您猜测的价格数目:" INT
let TIMES++
if [ $INT -eq $PRICE ] ; then
echo "恭喜您答对了,实际价格是 $PRICE"
echo "您总共猜测了 $TIMES 次"
exit 0
elif [ $INT -gt $PRICE ] ; then
echo "太高了!"
else
echo "太低了!"
fi
done

bash Guess.sh
//显示
商品实际价格为0-999之间,猜猜看是多少?
请输入您猜测的价格数目:500
太低了!
请输入您猜测的价格数目:800
太高了!
请输入您猜测的价格数目:650
太低了!
请输入您猜测的价格数目:720
太高了!
请输入您猜测的价格数目:690
太低了!
请输入您猜测的价格数目:700
太高了!
请输入您猜测的价格数目:695
太高了!
请输入您猜测的价格数目:692
太高了!
请输入您猜测的价格数目:691
恭喜您答对了,实际价格是 691
您总共猜测了 9 次

case条件测试语句

image.png
vim Checkkeys.sh

#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "您输入的是 字母。"
;;
[0-9])
echo "您输入的是 数字。"
;;
*)
echo "您输入的是 空格、功能键或其他控制字符。"
esac

bash Checkkeys.sh
//显示
请输入一个字符,并按Enter键确认:6
您输入的是 数字。

bash Checkkeys.sh
//显示
请输入一个字符,并按Enter键确认:p
您输入的是 字母。

bash Checkkeys.sh
//显示
请输入一个字符,并按Enter键确认:^[[15~
您输入的是 空格、功能键或其他控制字符。

计划任务服务程序

一次性计划任务:

设置今晚23点30分开启网站服务
格式:at 时间

at 23:30
//同时按下 Ctrl + D组合键来结束编写计划任务

查看已设置号但还未执行的一次性计划任务

at -l
//显示
1 Wed Nov 21 23:30:00 2018 a root

删除已设置的一次性计划任务:
格式:atrm 任务序列号

at 1
长期性计划任务:

crontab -e:创建、编辑计划任务
crontab -l:查看当前计划任务
crontab -r:删除某条计划任务
格式:* * * * * 命令 分别对应 分、时、日、月、周 命令

注:如果是管理员,可以加上 -u 参数来编辑他人的计划任务

使用crond设置任务的参数字段说明

字段 说明
取值为0~59的整数
取值为0~23的任意整数
取值为1~31的任意整数
取值为1~12的任意整数
取值为0~7的任意整数,其中0与7均为星期日
命令 要执行的命令或程序脚本

每周一的凌晨3点25分把/home/wwwroot目录打包备份为backup.tar.gz

crontab -e

30 3 * * 1 /usr/bin/tar -czvf bacup.tar.gz /home/wwwroot

查看已创建的计划任务

crontab -l
//显示
30 3 * * 1 /usr/bin/tar -czvf bacup.tar.gz /home/wwwroot

相关文章

  • Linux就该这么学 | 第04~06章

    第4章:Vim编辑器与Shell命令脚本 本章学习内容有 Vim文本编辑器、编写Shell脚本、流程控制语句、第一...

  • Linux之shell脚本编程

    Linux之shell脚本编程 主要内容: • Vim 编辑器• Shell 脚本• 任务提交 Vim 编辑器 V...

  • linux学习笔记---5:vim编辑器及命令执行,头命令;标准

    vim编辑器与linux脚本 头命令:linux脚本的头命令:#!/bin/bash ---指定linux脚本的解...

  • holleworld

    创建一个目录学习shell脚本,叫shell_script吧 开始写shell脚本 进入vim编辑器,按 i输入一...

  • Vim编辑器与Shell命令脚本

    Vim编辑器 vim编辑器有三种模式:命令模式、输入模式、末行模式命令模式:控制光标移动,可对文本进行复制、黏贴、...

  • 某些知识点的链接

    Markdown语法vim编辑器命令ubuntu终端命令shell常用命令shell命令解释 栈链的基本操作mys...

  • 编译简单的脚本

    Shell脚本的编写要使用到Vim文本编辑器,按照命令的执行顺序依次编写,每行写一条Linux命令。并且一个完整的...

  • Shell(undone)

    第一个shell脚本 打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展...

  • FFmpeg开发--Vim详解

    Vim编辑器Vim处理模式: Vim常用命令: Vim查找与替换:

  • vim学习 09——shell命令

    vim学习 09——shell命令 执行 shell 命令 :!shell命令 : 可以执行 shell 命令。 ...

网友评论

      本文标题:Vim编辑器与Shell命令脚本

      本文链接:https://www.haomeiwen.com/subject/vjckqqtx.html