vim命令及shell命令
目录
vim命令
vim三种工作模式
光标的跳转
复制粘贴
剪切删除
撤销回滚替换
翻页
其他
shell编程命令
判断用户的参数
可用的整数比较运算符
常见的字符串比较运算符
if条件测试语句
for条件循环语句
vim命令
vim三种工作模式
Vim编辑器中设置了三种模式: 命令模式、编辑模式、末行模式,每种模式分别又支持多种不同的命令快捷键,大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。
光标的跳转
Shift + g | G // 将光标跳转到文件最后一行
gg // 将光标跳转到文件的第一行
Ngg // 将光标跳转到指定的行(N为阿拉伯数字)
Shift + 4 | $ // 将光标跳转到当前所在行的行末
Shift + 6 | ^ | 0 // 将光标跳转到当前所在行的行首
复制粘贴
yy // 复制光标所在行的整行内容
P(大写P) // 将复制的内容粘贴到光标所在行的上一行
p(小写p) // 将复制的内容粘贴到光标所在行的下一行
Nyy|yNy // 将光标所在行整行内容及下面N-1行内容复制 (N为阿拉伯数字)
剪切删除
dd // 将光标所在行一整行内容,剪切(删除)
Ndd | dNd // 将光标所在行及下面N-1行内容剪切(N为阿拉伯数字)
Shift + d | D // 将光标所在字符及后面整行内容剪切(删除)
x // 删除当前光标所在字符
Shift + x | X // 将光标所在当前字符的前一个字符删除
d + Shift + g | dG // 将光标所在行及后面所有行内容删除
撤销回滚替换
u // 撤销上一次操作
Ctrl + r // 恢复上一次撤销的操作
r // 替换光标当前所在的一个字符
Shift + r | R // 从光标所在字符开始进行替换直到按ESC结束
翻页
Ctrl + b // 向前翻页
Ctrl + f // 向后翻页
其他
:命令 //执行该命令
:整数 //跳转到改行
:set nu //显示行号
:set nonu //不显示行号
?字符串 //在文本中从下到上搜索该字符串
/字符串 //在文本中从上到下搜索该字符串
shell编程命令
处理方式:交互式+批处理
echo $SHELL
/bin/bash
判断用户的参数
文件测试所用参数
运算符 | 作用 |
---|---|
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
- && 逻辑与,当前面的命令执行成功后,才会执行后面的命令。返回 0 为真,else为假
- || 逻辑或,当前面的命令执行失败后,才会执行后面的命令。返回 0 为真,else为假
- ! 逻辑非,把条件测试中的结果取相反值
可用的整数比较运算符
运算符 | 作用 | 示例 |
---|---|---|
-eq | 是否等于 | liyanqiu@192 ~ % [10 -eq 10] zsh: bad pattern: [10 liyanqiu@192 ~ % [ 10 -eq 10 ] liyanqiu@192 ~ % echo $? 0 |
-ne | 是否不等于 | |
-gt | 是否大于 | |
-lt | 是否小于 | |
-le | 是否等于或小于 | |
-ge | 是否大于或等于 |
[root@192 ~]# free -mtotal used free shared buff/cache available
Mem: 1638 1279 35 11 418 359
Swap: 2047 140 1907
[root@192 ~]# free -m |grep -i mem
Mem: 1638 1327 47 9 356 310
[root@192 ~]# free -m |grep -i mem |awk '{print $4}' //-i忽略大小写
47
[root@192 ~]# FreeMem = `free -m |grep -i mem |awk '{print $4}'`。//FreeMem = 有空格导致报错,使用反引号``把命令执行的结果返回给FreeMem
bash: FreeMem: 未找到命令...
[root@192 ~]# FreeMem=`free -m |grep -i mem |awk '{print $4}'`
[root@192 ~]# echo $FreeMem
44补充知识点:
\ \后面的一个变量变为单纯的字符串
'' 转义其中所有的变量为字符串
"" 保留变量属性,不进行转义处理
`` 把其中的命令执行后,返回结果
查看内存是否小于1024 ,若小于则输出:mem is less
[root@192 ~]# [ $FreeMem -lt 1024 ] && echo "mem is less"
mem is less
常见的字符串比较运算符
运算符 | 作用 | 示例 |
---|---|---|
= | 比较字符串内容是否相同 | |
!= | 比较字符串内容是否不同 | |
-z | 判断字符串内容是否为空 | 判断String字符串是否为空: |
if条件测试语句
单语句
---格式:
if 条件测试操作
then 命令序列1
fi
#需求:检查/medim/cdrom目录是否存在,若不存在则创建目录,存在则结束命令。[root@192 ~]# cat mkcdrom.sh
#! /bin/bash
DIR=/medim/cdrom
if [ ! -e $DIR ] #-e 目录等于,! -e 目录不等于,即不存在
then
mkdir -p $DIR #递归创建目录/medim/cdrom
fi
[root@192 ~]# /bin/bash mkcdrom.sh
[root@192 ~]# ls -l mkcdrom.sh
-rw-r--r--. 1 root root 71 10月 31 22:35 mkcdrom.sh
[root@192 ~]#
双语句
---格式:
if 条件测试操作
then 命令序列1
else 命令序列2
fi
[root@192 ~]# cat chkhost.sh
#! /bin/bash
ping -c 3 -i 0.2 -W 0.5 8.8.8.8 >/dev/null #-c指定ping的次数,-i指定ping间隔,-W 指定超时等候时间 ,>执行命令后的结果输出写入到/dev/null中
if [ $? -eq 0 ] #如果ping不通,返回非零数值,ping的通返回0 ,-eq:判断是否等于0
then
echo "host 8.8.8.8 is online"
else
echo "host 8.8.8.8 is offline"
fi[root@192 ~]# /bin/bash chkhost.sh
host 8.8.8.8 is online
[root@192 ~]# ping 8.8.8.8 -c 2
PING 8.8.8.8 (8.8.8.8) 56(84) 比特的数据。
64 比特,来自 8.8.8.8: icmp_seq=1 ttl=53 时间=38.4 毫秒
64 比特,来自 8.8.8.8: icmp_seq=2 ttl=53 时间=41.2 毫秒--- 8.8.8.8 ping 统计 ---
已发送 2 个包, 已接收 2 个包, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 38.442/39.826/41.211/1.384 ms
[root@192 ~]#
多语句
---格式:
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
#成绩(85-100],great ,(59-85],pass ,否则fail[root@192 ~]# cat chkscore.sh
#! /bin/bash
read -p "please input your score (0-100):" GRADE
if [ $GRADE -ge 85 ]&&[ $GRADE -le 100 ];
thenecho "grate,very good!"
elif [ $GRADE -ge 59 ]&&[ $GRADE -le 85 ];
thenecho "pass,ok !"
elseecho "fail not ok !"
fi
[root@192 ~]# /bin/bash chkscore.sh
please input your score (0-100):90
grate,very good!
[root@192 ~]# /bin/bash chkscore.sh
please input your score (0-100):70
pass,ok !
[root@192 ~]# /bin/bash chkscore.sh
please input your score (0-100):10
fail not ok !
[root@192 ~]#
for条件循环语句
for 变量名 in 取值列表
do
命令序列
done