Vim文本编辑器
在 Linux 系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数
- 命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作
- 输入模式:正常的文本录入
- 末行模式:保存或退出文档以及设置编辑环境
命令 | 作用 |
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 test.txt
打开文档后,默认进入的是Vim编辑器的命令模式
可以分别使用 a、i、o三个键从命令模式切换到输入模式。
其中a 键与 i 键分别是在光标后面一位和光标当前位置切换到输入模式,o 键则是在光标的下面再创建一个空行
敲击键盘 Esc 键从输入模式返回命令模式
输入:wq!切换到末行模式保存退出
配置主机名称
主机名大多保存在/etc/hostname中
- 使用 Vim编辑器修改“/etc/hostname”主机名称文件
- 把原始主机名称删除后追加“YEYUFAN”
- 保存并退出文档然后使用 hostname 命令检查是否修改成功
hostname 命令用于查看当前的主机名称, 但有时主机名称的改变不会立即同步到系统中,需要重启查看
配置网卡信息
在 Linux系统中,一切都是文件,因此配置网络服务的工作其实就是在编辑网卡配置文件
在 RHEL 5,RHEL 6 中,网卡配置文件的前缀为 eth,第 1 块网卡为eth0,第2 块网卡为 eth1,以此类推.而在 RHEL 7 中,网卡配置文件的前缀则以 ifcfg开始,加上网卡名称共同组成了网卡配置文件的名字,例如 ifcfg-eno16777736.
- 首先切换到/etc/sysconfig/network-scripts 目录中(存放着网卡的配置文件)
- 使用 Vim编辑器修改网卡文件 ifcfg-eth0
- 设备类型:TYPE=Ethernet
- 地址分配模式:BOOTPROTO=s
- 网卡名称:NAME=eno16777736
- 是否启动:ONBOOT=yes
- IP 地址:IPADDR=192.168.10.10
- 子网掩码:NETMASK=255.255.
- 网关地址:GATEWAY=192.168.1
- DNS 地址:DNS1=192.168.10.1
- 重启网络服务并测试网络是否联通systemctl restart network
配置Yum软件仓库
进入到/etc/yum.repos.d/目录中(存放着Yum软件仓库的配置文件)
cd /etc/yum.repos.d
用wget下载repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
备份系统原来的repo文件
mv CentOs-Base.repo CentOs-Base.repo.bak
替换系统的repo文件
mv Centos-7.repo CentOs-Base.repo
执行yum源更新命令
yum clean all
yum makecache
yum update
编写Shell脚本
Shell脚本命令的工作方式有两种:交互式和批处理
- 交互式:用户每输入一条命令就立即执行。
- 批处理:由用户事先编写好一个完整的 Shell 脚本,Shell 会一次性执行脚本中诸多的命令
编写简单的脚本
查看当前所在工作路径并列出当前目录下所有的文件及属性信息,实现这个功能的脚本
vim example.sh
#!/bin/b
#For Exa
pwd
ls -al
:wq保存退出
运行脚本
bash example.sh
接收用户的参数
vim example.sh
#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第1个参数为$1,第5个为$5。"
sh example.sh one two three four five six
判断用户的参数
条件测试语句可以分为 4 种
- 文件测试语句
- 逻辑测试语句
- 整数值比较语句
- 字符串比较语句
运算符 | 作用 |
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
使用文件测试语句来判断/etc/fstab 是否为一个目录类型的文件, 然后通过 Shell 解释器的内设$?变量显示上一条命令执行后的返回值.如果返回值为 0,则目录存在;如果返回值为非零的值,则意味着目录不存在.
[ -d /etc/fstab ]
echo $?
逻辑语句用于对测试结果进行逻辑分析,根据测试结果可实现不同的效果.例如在 Shell终端中逻辑 “与” 的运算符号是&&, 它表示当前面的命令执行成功后才会执行它后面的命令,因此可以用来判断/etc/passwd文件是否存在,若存在则输出 Exist字样
[ -e /etc/passwd ] && echo "Exist"
逻辑“或” ,它在 Linux 系统中的运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令
echo $USER
[ $USER != root ] || echo "user"
逻辑语句“非”,在 Linux 系统中的运算符号是一个叹号! ,它表示把条件测试中的判断结果取相反值
运算符 | 作用 |
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否等于或小于 |
-ge | 是否大于或等于 |
FreeMem=`free -m | grep Mem: | awk '{print $4}'
[ $FreeMem -lt 1024 ] && echo "Insufficient Memory"
运算符 | 作用 |
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为 |
[ -z $String]
echo $?
echo $LANG
[ $LANG != "en.US" ] && echo "Not en.US"
流程控制语句
if 条件测试语句
if 条件语句的单分支结构由 if、then、fi关键词组成,而且只在条件成立后才执行预设的命令, 相当于口语的 “如果……那么……” .
判断/media/cdrom 目录是否存在,若存在就结束条件判
断和整个 Shell脚本,反之则去创建这个目录
vim mkcdrom.sh
#!/bin/bash
DIR="/media/cdrom"
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi
if 条件语句的双分支结构由 if、then、else、fi 关键词组成,它进行一次条件匹配判断,如果与条件匹配,则去执行相应的预设命令;反之则去执行不匹配时的预设命令,相当于口语的“如果……那么……或者……那么……”.
验证某台主机是否在线,然后根据返回值的结果,要么显示主机在线信息,要么显示主机不在线信息
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
if 条件语句的多分支结构由 if、then、else、elif、fi关键词组成,它进行多次条件匹配判断,多次判断中的任何一项在匹配成功后都会执行相应的预设命令,相当于口语的“如果……那么……如果……那么……”.
判断用户输入的分数在哪个成绩区间内
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"
elif [ $GRADE -gt 100 ] || [ $GRADE -lt 0 ] ; then
echo "Error!"
else
echo "$GRADE is Fail"
fi
For 条件循环语句
vim users.txt
andy
barry
carl
duke
eric
george
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"
else
echo "$UNAME , Create failure"
fi
fi
done
while条件循环语句
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
case条件测试语句
vim Checkkeys.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "您输入的是 字母。"
;;
[0-9])
echo "您输入的是 数字。"
;;
*)
echo "您输入的是 空格、功能键或其他控制字符。"
esac
计划任务服务程序
计划任务分为一次性计划任务与长期性计划任务,大家可以按照如下方式理解。
- 一次性计划任务:今晚 11 点 30 分开启网站服务
- 长期性计划任务:每周一的凌晨 3 点 25 分把/home/wwwroot 目录打包备份为backup.tar.gz
顾名思义,一次性计划任务只执行一次,一般用于满足临时的工作需求。我们可以用 at命令实现这种功能,只需要写成“at 时间”的形式就可以
如果想要查看已设置好但还未执行的一次性计划任务,可以使用“at -l”命令.要想将其删除,可以用“atrm 任务序号” .在使用 at 命令来设置一次性计划任务时,默认采用的是交互式方法.
at 23:30
at > systemctl restart httpd
at > 同时按下Ctrl + D 组合键来结束编写计划任务
at -l
创建、编辑计划任务的命令为“crontab -e”
口诀“分、时、日、月、星期 命令”
在每周一、三、五的凌晨 3 点 25 分,都需要使用 tar 命令把某个网站的数据目录进
行打包处理
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
- Vim编辑器的三种模式分别是什么?
- 命令模式、末行模式与输入模式
- 怎么从输入模式切换到末行模式?
- 需要先敲击 Esc 键退回到命令模式,然后敲击冒号(:)键后进入末行模式
- 一个完整的 Shell脚本应该哪些内容?
- 应该包括脚本声明、注释信息和可执行语句
- 分别解释 Shell脚本中$0 与$3 变量的作用
- 在 Shell 脚本中,$0 代表脚本文件的名称,$3 则代表该脚本在执行时接收的第三个参数
- if 条件测试语句有几种结构,最灵活且最复杂的是哪种结构?
- if条件测试语句包括单分支、双分支与多分支等三种结构,其中多分支结构是最灵活且最复杂的结构,其结构形式为 if…then…elif…then…else…fi
- for 条件循环语句的循环结构是什么样子的?
- for条件循环语句的结构为“for 变量名 in 取值列表 do 命令序列 done
- 若在 while条件循环语句中使用 true 作为循环条件,那么会发生什么事情?
- 因条件测试值永久为 true, 因此脚本中循环部分会无限地重复执行下去, 直到碰到 exit命令才会结束
- 如果需要依据用户的输入参数执行不同的操作,最方便的条件测试语句是什么?
- case条件语句
- Linux 系统的长期计划任务所使用的服务是什么,其参数格式是什么?
- 长期计划任务需要使用 crond 服务程序,参数格式是“分、时、日、月、星期 命令”
Comments | NOTHING