Vim编辑器
vim编辑器有三种模式:命令模式、输入模式、末行模式
命令模式
:控制光标移动,可对文本进行复制、黏贴、删除和查找等工作
输入模式
:正常的文本录入
末行模式
:保存或退出文档,以及设置编辑环境
![](https://img.haomeiwen.com/i2627843/3f4a1d7419f752d7.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
:若上面参数开启校验,那么请指定公钥文件地址
![](https://img.haomeiwen.com/i2627843/6db0073b7236b4ff.png)
编写Shell脚本
shell脚本的工作方式有两种:交互式和批处理
交互式
:用户每输入一条命令就立即执行
批处理
:由用户事先编写好一个完整的shell脚本,shell会一次性执行脚本中诸多命令
执行脚本:
1、使用bash命令
bash example.sh
2、通过输入完整路径的方式来执行
![](https://img.haomeiwen.com/i2627843/36cb9edaa563aab9.png)
shell脚本通过接受参数来灵活工作
$#
:总共有几个参数
$*
:对应所在位置的参数值
$?
:显示上一次命令的执行返回值
$1、$2、$3...
:对应着第N个位置的参数值
vim example.sh
![](https://img.haomeiwen.com/i2627843/d587b7abae7630c6.png)
![](https://img.haomeiwen.com/i2627843/2e6965d5d29a8433.png)
判断用户输入的参数
条件测试语法的执行格式:[ 条件表达式 ]
注:条件表达式的两边均有一个空格
条件测试语句分为4种:
文件测试语句
:使用指定条件来判断文件是否存在或权限是否满足等情况
逻辑测试语句
:用户对测试结果进行逻辑分析,根据测试结果可实现不同的效果
整数值比较语句
:使用规范的整数比较运算符来对数字进行操作
字符串比较语句
:用于判断测试字符串是否为空值
文件测试所用的参数:
运算符 | 作用 |
---|---|
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
//判断 /etc/fstab 是否为一个目录类型的文件
[ -d /etc/fstab ]
echo $?
//$?显示上一条命令执行后的返回值。返回值为0,表示目录存在;返回值为非零的值,表示目录不存在
1
逻辑语句分运算符:
&&
:逻辑与,表示当前面的命令执行成功后才会执行它后面的命令
||
:逻辑或,表示当前面的命令执行失败后才会执行它后面的命令
!
:逻辑非,表示把条件测试中的判断结果取相反值
可用的整数比较运算符
运算符 | 作用 |
---|---|
-eq | 是否相等 |
-ne | 是否不相等 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否小于或等于 |
-ge | 是否大于或等于 |
常见的字符串比较运算符:
运算符 | 作用 |
---|---|
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为空 |
流程控制语句
if条件测试语句:
![](https://img.haomeiwen.com/i2627843/664208304071a09f.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
![](https://img.haomeiwen.com/i2627843/566fd40ce8b19604.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
:定义等待超时时间
![](https://img.haomeiwen.com/i2627843/d61fe44f6e7e27d6.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条件循环语句
![](https://img.haomeiwen.com/i2627843/6bbd5d3122e9e58c.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条件循环语句
![](https://img.haomeiwen.com/i2627843/0bd112863f9258b8.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条件测试语句
![](https://img.haomeiwen.com/i2627843/594ad2b2a84e2069.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
网友评论