vim 与 脚本

1、总结vim命令行模式常见快捷方式,以及vim查找,替换的方法

vim命令行模式常见快捷方式


i insert, 在光标所在处输入
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
ZZ 保存退出
ZQ 不保存退出
:q 退出
:q! 强制退出,丢弃做出的修改
:wq 保存退出
:x 保存退出

字符间跳转:
h: 左 l: 右 j: 下 k: 上
#COMMAND:跳转由#指定的个数的字符

单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数

当前页跳转:
H:页首 M:页中间行 L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端

行首行尾跳转:
^: 跳转至行首的第一个非空白字符
0: 跳转至行首
$: 跳转至行尾

行间移动:
#G :扩展命令模式下:# 跳转至由#指定行
G:最后一行
1G, gg: 第一行
句间移动:
):下一句(:上一句
段落间移动:
}:下一段{:上一段

Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏

字符编辑:
x: 删除光标处的字符
#x: 删除光标处起始的#个字符
xp: 交换光标所在处的字符及其后面字符的位置
~:转换大小写
J:删除当前行后的换行符

替换命令(r, replace)
r: 替换光标所在处的字符
R:切换成REPLACE模式

删除命令:
d: 删除命令,可结合光标跳转字符,实现范围删除

复制命令(y, yank):
y: 复制,行为相似于d命令

粘贴命令(p, paste):
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

vim查找,替换的方法

查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向

查找并替换
s: 在扩展模式下完成查找替换操作
格式:s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
修饰符:
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现
gc:全局替换,每次替换前询问
查找替换中的分隔符/可替换为其它字符,例如
s@/etc@/var@g
s#/boot#/#i

eg:
用vim,在/etc/default/grub倒数第二行末尾引号前面加入 xyz

:%s/\(.*CMD.*\)"/\1 xyz"/

用vim,在/etc/fstab中给行首不是#开头的都加上#

:%s@\(^[^#].*\|^$\)@#\1@
方法二
:%s@^[^#]\|^$@#&@

用vim,去除#开头的行

:%s/^#.*\n//
方法二 留下了空行
:%s@^#.*$@@

2、总结脚本中运算符、逻辑运算以及用法

条件运算符

运算符号 代表意义 应用 说明
= 等于 整型或字符串比较: str1 = str2 字符串str1 和字符串str2 相等时返回真,如果在[]中,只能是字符串
== 等于 整型或字符串比较: str1 == str2 字符串str1 和字符串str2 相等时返回真,如果在[]中,只能是字符串
!= 不等于 整型或字符串比较: str1 != str2 字符串str1和字符串str2不相等时返回真,如果在[]中,只能是字符串
< 小于 整型或字符串比较: str1 < str2 按字典顺序排序,字符串str1 在字符串str2 之前,在[]中,它表示字符串,如需使用请转义<
> 大于 整型和字符串比较 在[]中,它表示字符串,如需使用请转义>
-eq 等于 整型比较: int1 -eq int2 如果int1 等于int2,则返回真
-ne 不等于 整型比较: int1 -ne int2 如果int1 不等于int2,则返回真
-lt 小于 整型比较: int1 -lt int2 如果int1 小于int2,则返回真
-gt 大于 整型比较: int1 -gt int2 如果int1 大于int2,则返回真
-z 空字符串 字符串比较: -z string 字符串string 为空串(长度为0)时返回真
-n 非空字符串 字符串比较 :-n string 字符串string 为非空串时返回真
-le 小于或等于 整型比较: int1 -le int2 如果int1 小于等于int2,则返回真
-ge 大于或等于 整型比较: int1 -ge int2 如果int1 大于等于int2,则返回真

逻辑运算


3、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中

[root@centos7 bin]#cat backup.sh 
#!/bin/bash
echo "Backup is begin..."
sleep 1
cp -av /etc/ /data/etc`date +%F`
echo "Backup is finished"

4、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统

解读:
当/etc/下存在nologin文件时普通用户就无法登录系统。管理员删掉这个文件后才可以登录。
因此,对于生产环境中,将来做维护有用,维护时禁止普通用户登录。

禁止普通用户登录
[root@centos7 bin]#cat nologin.sh
#!/bin/bash
touch /etc/nologin
解除禁止
[root@centos7 bin]#cat login.sh 
#!/bin/bash
rm -f /etc/nologin

5、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

[root@centos7 bin]#cat disk.sh
#!/bin/bash
#
#********************************************************************
#Author:                Jack
#QQ:                    Secret
#Date:                  2019-05-27
#FileName:             disk.sh
#URL:                   Building
#Description:          The test script
#Copyright (C):         2019 All rights reserved
#********************************************************************
echo "The max use of disk is `df -h | grep "/dev/sd.*" | tr -s ' ' | cut -d ' ' -f 5 | sort -nr | head -n1`"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,830评论 3 48
  • 自我总结篇: 对文件的操作技巧: vim文件一个有三种状态:命令(浏览/输入命令转变末行模式),文本(添加/编辑/...
    小知大知阅读 815评论 0 0
  • 本文摘自https://www.cnblogs.com/yangjig/p/6014198.html 感谢原作者的...
    荣子3507阅读 341评论 1 0
  • 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可...
    三十儿阅读 431评论 0 1
  • vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下: v 从...
    壹首簡單的歌阅读 889评论 0 7