Linux就该这么学丨Vim编辑器与Shell命令脚本(一)
一、Vim文本编辑器
1、命令模式:控制光标的移动,可对文本进行复制、粘贴、删除和查找等操作;
(1)dd:删除(剪切)光标所在行;
(2)5dd:删除(剪切)从光标处开始的5行;
(3)yy:复制光标所在整行;
(4)5yy:复制从光标处开始的5行;
(5)n:显示搜索命令定位的下一个字符串;
(5)N:显示搜索命令定位的上一个字符串;
(6)u:撤销上一步的操作;
(7)p:将之前删除(dd)或复制(yy)过的数据粘贴到光标后面;
2、输入模式/编辑模式/插入模式(按a、i、o等键进入):对文本进行编辑修改等操作;
3、末行模式/冒号模式(按:键进入):保存或退出文档,以及设置编辑环境;
(1):w:保存;
(2):q:退出;
(3):q!:强制退出(放弃修改的文档内容);
(4):wq!:强制保存退出;
(5):set nu:显示行号;
(6):set nonu:不显示行号;
(7):命令:执行该命令;
(8):整数:跳转到该行;
(9):s/one/two:将当前光标所在行的第一个one替换成two;
(10):s/one/two/g:将当前光标所在行的所有one替换成two;
(11):%s/one/two/g:将全文中的所有one替换成two;
(12)?字符串:在文本中从下至上搜索该字符;
(13)/字符串:在文本中从上至下搜索该字符;
注:1、三种模式转换:每次运行Vim默认进入命令模式,命令模式(按a、i、o等键)-->输入模式(按ESC)-->命令模式,命令模式(按:键)-->末行模式(按ESC)-->命令模式;
2、Vi和Vim的区别在于是否需要着色,着色时用Vim,不需要着色时用Vi;

二、编写Shell脚本
1、Shell脚本的工作方式:
(1)交互式(Interactive):用户每输入一条命令就立即执行;
(2)批处理(Batch):由用户实现编写好的一个完整的Shell脚本,Shell会一次性执行脚本中的诸多命令;
2、编写简单的脚本
#!/bin/bash
#这是个注释
pwd
ls -al
注:#!是Shell的脚本声明,#后是脚本的注释。
3、接收用户的参数
(1)$0:当前脚本的文件名称;
(2)$#:一共有几个参数;
(3)$*:所有位置的参数值;
(4)$1、$2、$3、$4:分别对应第N个位置的参数值;
4、判断用户的参数:
(1)如果返回的值为0为真,非0则为假;
(2)-d:测试文件是否为目录类型([ -d /etc/fstab ]:测试fstab文件的类型);
-e:测试文件是否存在([ -e /dev/cdrom ] && “Exist”:测试cdrom 文件是否存在,存在输出Exist);
-f:判断是否为一般文件;
-r:测试当前用户是否有权限读取;
-w:测试当前用户是否有权限写入;
-x:测试当前用户是否有权限执行;
&&:与,表示当前面的命令执行成功后才会执行后面的命令;
||:或,表示当前面的命令执行失败后才会执行后面的命令;
!:非,表示把条件测试中的判断结果取反值;
-eq:是否等于;
-ne:是否不等于;
-gt:是否大于;
-lt:是否小于;
-le:是否小于或等于;
-ge:是否大于或等于;
=:比较字符串内容是否相同;
!=:比较字符串内容是否不同;
-z:判断字符串内容是否为空;
5、流程控制语句
1、if条件语句
(1)if 条件测试操作
then 命令序列
fi
如:#!/bin/bash
DIR="/media/cdrom"
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi
(2)if 条件测试操作
then 命令序列1
else 命令序列2
fi
如:#!/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
(3)if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else 命令序列3
fi
如:#!/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

浙公网安备 33010602011771号