Vim文本编辑器
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 |
?字符串 | 在文本中从下至上搜索该字符串 |
/字符串 | 在文本中从上至下搜索该字符串 |
编辑模式下:正常编辑。
编写并运行简单的Shell脚本
脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;
注释信息(#)是对脚本功能和某些命令的介绍信息,增强可读性;
可执行语句也就是我们平时执行的Linux命令了
例:
编写
[root@root ~]# vim example.sh
#!/bin/bash
#Example: show present work directory and list all file information.
pwd
ls -al
运行
[root@root ~]# bash example.sh
或者
[root@root ~]# ./example.sh
shell接受用户参数:
$0:当前Shell脚本程序的名称
$#:总共有几个参数
$*:所有位置的参数值
$?:显示上一次命令的执行返回值
而$1、$2、$3…… $N: 第N个位置的参数值
判断用户的参数
测试语句格式: [ 条件表达式 ]
测试结果:0-true, 非0-false
按照测试对象来划分,条件测试语句可以分为4种:
文件测试语句;
操作符 | 作用 |
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
例子:判断/etc/fstab是否为一个目录类型
[root@root ~]# [ -d /etc/fstab ]
[root@root ~]# echo $?
1
例子:判断/etc/fstab是否为一般文件
[root@root ~]# [ -f /etc/fstab ]
[root@root ~]# echo $?
0
逻辑测试语句;
&& | 当前面的命令执行成功后才会执行它后面的命令 |
|| | 表示当前面的命令执行失败后才会执行它后面的命令 |
! | 表示把条件测试中的判断结果取相反值 |
例子:判断/dev/cdrom文件是否存在,若存在则输出Exist字样。
[root@linuxprobe ~]# [ -e /dev/cdrom ] && echo "Exist"
Exist
例子:可以用来结合系统环境变量USER来判断当前登录的用户是否为非管理员身份
[root@root ~]# echo $USER
root
[root@root ~]# [ $USER = root ] || echo "user"
[root@root ~]# su - welldone
[welldone@welldone ~]$ [ $USER = root ] || echo "user"
user
整数值比较语句;
操作符 | 作用 |
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否等于或小于 |
-ge | 是否大于或等于 |
例子:10是否大于10以及10是否等于10
[root@root ~]# [ 10 -gt 10 ]
[root@root ~]# echo $?
1
[root@root~]# [ 10 -eq 10 ]
[root@root~]# echo $?
0
字符串比较语句;
操作符 | 作用 |
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为空 |
例子:接下来通过判断String变量是否为空值,进而判断是否定义了这个变量
[root@linuxprobe ~]# [ -z $String ]
[root@linuxprobe ~]# echo $?
0
流程控制语句
if 条件判断
then 命令操作
fi
if 条件判断
then 命令操作1
else 命令操作2
fi
if 条件判断1
then 命令操作1
elif 条件判断2
then 命令操作2
else
命令操作3
fi
for 变量名 in 取值列表
do
命令操作
done
while 条件测试操作
do
命令操作
done
case 变量值 in
模式1)
命令操作1
;;
模式2)
命令操作2
;;
......
*)
默认命令操作
esac