从零开始的云计算生活——第四天,重点掌握!VIM操作系统。

一·故事背景

在之前基础的学习下,终于接触到了很重要的技术,vim操作,在之后的生涯中,vim或将一直伴随我们的生涯,虽然第一次接触他,但是总有一种熟悉的感觉,冥冥中好像在呼唤,曾经的我也这样和你相遇么,很高兴重新认识你,vim。

二·VIM编辑器

一·VIM操作系统

①·相关命令

操作作用
G跳转到文件末尾
gg返回文件首行
home键或者^跳到首字符
end键或者$跳到尾字符
yy单行复制
nyyn行复制
P将光标移动到想要粘贴位置的上一行
p将光标移动到想要粘贴位置的下一行
u撤销操作,注意:进行保存且退出后无效
dd单行删除
nddn行删除
D或者d$从所在行的光标处删除到末尾
d^从所在行的光标处删除到行首
r替换某一个字符
del键光标所在字符的后一个字符
/关键字根据关键字查找,n:上翻;N:下翻
ZZ保存且退出
大写G回到底部

gg回到行首

home或者^回到首字符

end或者$跳转尾字符

yy单行复制,p复制到下一行

nyy多行复制,P复制到上一行

u取消操作

dd单行删除

ndd多行删除

D或者d$,光标处删除至句尾

d^光标处删除至句首

r替换单字符

del删除光标后一个字符

/关键词   查找关键词

zz保存退出

②·操作模式

作用:进行文件内容编辑

操作作用
a进入插入模式,在当前光标的后一个字符插入
o在当前光标的下一行插入
i在当前光标所在字符插入,返回命令模式时会将光标迁移一个字符
A在光标所在行的尾字符后插入
I(大写i)在光标所在行的首字符插入
O在当前光标的上一行插入
ESC(按键)返回命令模式
a进入插入模式,光标后插入

o进入插入模式,光标下一行进行操作

i进入插入模式,结束会回退一格

A进入插入模式,在光标尾字符插入

I进入插入模式,在光标首字符插入

O进入插入模式,从光标上一行开始插入

③·末行模式

作用:保存、退出及字符串替换

操作作用
:w保存
:q不保存退出
:wq或:x保存退出
!强制
:X->输入密码->:wq设置密码并保存退出
:X->回车两次->:wq 或者 :set key=""->:wq取消密码
:set nu设置行号
:set nonu取消行号
:nohl取消高亮
:行号跳转到指定行
:%s/keyword/neword/全文替换,首个匹配替换,当包含路径时,#替换/作为匹配符号
:%s/keyword/neword/g全文替换,所有匹配替换,当包含路径时,#替换/作为匹配符号
:指定行号s/keyword/neword/指定行替换,首个匹配替换,当包含路径时,#替换/作为匹配符号
:指定行号s/keyword/neword/g指定行替换,所有匹配替换,当包含路径时,#替换/作为匹配符号
:起始行号,结束行号s/keyword/neword/范围替换,首个匹配替换,当包含路径时,#替换/作为匹配符号
:起始行号,结束行号s/keyword/neword/g范围替换,所有匹配替换,当包含路径时,#替换/作为匹配符号

小练习

1·执行:set nu显示行号,再用:set nonu取消显示

2·使用:15直接跳转到第15行

3·对10-20行执行范围替换: :10,20s/error/warning/g

4·执行全文替换:

1:%s/error/ERROR/ 替换每行第一个"error"

2:%s/error/ERROR/g 替换所有"error"

5·练习:X设置文件密码,再通过:set key=""取消密码

6·用:w test_backup.txt另存为副本文件

④·视图模式

操作作用
v进行行选中

练习

1·用v进入行选择模式:

选中3行后按y复制

移动光标后用p粘贴

⑤·视图快模式

操作作用
ctrl + v进行列选中
选中要删除的“#”,按del批量删除注释
选中要添加的列,输入 大写i ,输入#,按两次ESC批量增加注释

 1·用Ctrl+v进入列块模式:

纵向选中多列字符后按d删除

选中列后按I#添加注释,按两次ESC生效

2·批量注释:

用列块模式选中多行行首

插入#注释符

再次用列块模式删除注释符

二·vim高级用法

操作作用
:r!command将命令结果插入文件,command命令的结果插入光标下一行
:nr! command将命令结果插入文件,command命令的结果插入n行后
:m,n! command使用页面内容作为输入,command以m,n之间的行作为标准输入, 标准输出会代替m,n之间的行. 注意这个操作似乎是不可用ctrl+r撤销的。要谨慎使用。
:! /bin/bash暂时离开vim来执行命令,使用完sh后exit又可以返回vim

练习

1·在末行模式执行:r !date插入当前日期到光标下方

2·用:5r !ls -l将命令结果插入到第5行下方

3·尝试:!ls执行外部命令后返回编辑界面

三·Linux系统文件与目录内容检索

一、文件和目录内容检索处理命令

1·grep筛选

在文本中查找指定的字符串所在的行。

语法:

grep [选项] file

选项:

选项作用
-i忽略大小写。
-v反转匹配,只显示不匹配的行。
-c计数,只输出匹配行的数量。
-n显示匹配行及其行号。
-l(小写L)只输出包含匹配字符串的文件名。
-L只输出不包含匹配字符串的文件名。
-q(暂时不用)静默模式,不输出任何匹配信息。
-E使用扩展正则表达式。
-o只输出匹配到的部分,而不是整行内容。
-A [NUM]打印匹配行和之后的[NUM]行。
-B [NUM]打印匹配行和之前的[NUM]行。
-C [NUM] 或 --context=[NUM]打印匹配行及其前后的[NUM]行。
-P使用Perl正则表达式。
-r 或 --recursive递归搜索目录中的文件。
-R 或 --text将二进制文件当作文本文件处理。
-s 或 --no-messages不显示错误信息。

练习

①在 /var/log/messages 中查找所有包含 error 的行(忽略大小写)。

②·统计 /var/log/secureFailed password 出现的次数。

③·列出 /etc 目录下所有包含 root 的配置文件名称。

④·从 /etc/passwd 中提取所有以 /sbin/nologin 结尾的行。

⑤·查找 /etc/ssh/sshd_config 中所有非注释行(排除以 # 开头的行)。

⑥·在 /var/log/boot.log 中显示匹配 fail 的行及其后 3 行内容。

⑦·递归搜索 /etc/yum.repos.d/ 目录下所有包含 baseurl 的文件。

⑧·查找 /etc/fstab 中所有空行并显示行号。

2·find查找

find - 递归地在层次目录中处理文件

选项:

选项作用
-name根据关键字查找,支持通配符*
-type根据文件类型查找
-size根据文件大小查找
-maxdepth指定查找时的路径深度
-exec将find命令查找到的内容交给-exec后面的命令再次处理
-user根据文件的属主进行查找
-perm根据文件的权限进行查找

文件类型:

  • 普通文件: f

  • 目录:d

  • 连接文件: l

  • 字符设备文件: c

  • 块设备文件: b

练习

①·查找 /var/log/ 下所有大于 10MB 的日志文件。

②·列出 /etc/ 下所有属主为 root.conf 文件。

③·将 /etc/nginx/ 目录下所有 .conf 文件输出到终端

④·查找 /home/ 下所有空文件。

⑤·使用 xargs/var/log/ 下所有 .log 文件

⑥·查找 /usr/lib/ 下所有符号链接文件。

⑦·统计 /var/log/ 目录下每个子目录中的文log件数量。

3·sort排序

以行对文件进行排序

选项作用
-f忽略大小写,会将小写字母都转换为大写字母来进行比较
-b忽略每行前面的空格
-n按照数值进行排序
-r反向排序
-u等同于uniq,表示相同的数据仅显示一行
-t指定字段分隔符,默认使用[Tab]键分隔
-k指定排序字段
-o<输出文件>将排序后的结果转存至指定文件
-h友好显示

4·uniq去重

   uniq 是 Unix 和类 Unix 系统中的命令,用于从排序的文本数据中去除重复行,仅保留唯一的行。它通常与 sort 命令结合使用,因为 uniq 只能删除相邻的重复行。

语法:

uniq [options] [input_file [output_file]]

选项:

选项作用
-c进行计数,并删除文件中重复出现的行
-d仅显示连续的重复行
-u仅显示出现一次的行
-i忽略大小写

练习

①·对 /etc/passwd 按用户名(第一列)排序并去重。

②·将 /var/log/yum.log 按日期(第一列)排序。

③·合并 /var/log/messages/var/log/secure,去重后保存到 merged_logs.txt

④·统计 /var/log/secure 中每个 IP 地址出现的次数(需先排序)。

⑤·对 /etc/group 按组 ID(第三列)数值排序。

⑥·从 /var/log/maillog 中提取所有唯一的时间戳(格式 HH:MM:SS)。

⑦·将 du -sh /var/log/* 的输出结果按文件大小降序排序。

⑧·找出 /etc/passwd 中仅出现一次的用户名(第 1 列)。

⑨·对 /var/log/yum.log 按日期排序,同日期时按时间排序。

四·总结

  今日学习了vim命令和grep,find,sort,uniq命令,每个看似简单,但是进行组合的时候,就让我不知所措,练习中有很多错误答案,目前我难以处理,等待向老师请教后再来更改。


在经过老师的讲解,以及新命令的cut 学习,对练习进行了更改,可以更好的完成作业。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值