导读:在当今的服务器运维和开发领域,Linux 系统凭借其高效、稳定和开源的特性占据着重要地位。而 Linux 输入输出重定向和 VI 编辑器作为系统中不可或缺的两大核心功能,是每一位 Linux 使用者必须掌握的关键技能。输入输出重定向能够灵活控制命令的输入来源和输出去向,大大提升了数据处理的效率;VI编辑器则以其强大的文本编辑能力,成为在命令行环境下编辑文件的首选工具。 本文将带你深入探索这两个重要功能,不仅会详细介绍它们的各种操作方法,还会对其背后的原理进行剖析。无论你是初涉 Linux的新手,还是希望进一步提升技能的专业人士,相信都能从本文中获得有价值的知识和实践经验。
## 左,下,上,右,如果键盘上没有上下左右键,可以h,j,k,l
## 进入编辑模式有三个按钮:i、a、o, i在光标位置编辑、a是在光标后一位编辑、o是换行编辑,新起一行
ctrl+f 下翻一页
ctrl+b 上翻一页
ctrl+u 上翻半页
ctrl+d 下翻半页
## 0 跳至行首,不管有无缩进,就是跳到第0个字符
## ^ 跳至行首的第一个字符
## $ 跳至行尾(shift+4)
## gg 跳至文首
## G 跳至文尾(shift+g)
## 5gg/5G 调至第5行,或者命令行模式:5回车,也是跳到第5行,所以其实操作命令都不是唯一的## x删除单个字符
## 10x删除10个字符
## dd 删除光标所在行(其实dd是剪切的操作),
## 使用u撤销之前的操作,使用ctrl+r恢复
## 6dd 从光标开始往下删除6行
## dw 删除一个单词(word)
## 小p 粘贴粘贴板的内容到当前行的下面,比如将dd剪切的行黏贴到下面
## 大P 粘贴粘贴板的内容到当前行的上面
## yy 复制行
## 5yy复制5行,复制的内容可以通过p\P来黏贴## 搜索:
/pattern 向后搜索字符串pattern #辅助小n向下和大N向上,一般都是用/来搜索
?pattern 向前搜索字符串pattern #辅助小n向上和大N向下,?搜索用的少
## 替换:
:1369s/shell/jaden/g # 将第1369行的shell替换为jaden,/还可以用#或者@符号来代替::1369s#shell#jaden#g
:1369,1379s/shell/jaden/g # 将1369至1379这10行中的shell替换为jaden
:1369,$s/shell/jaden/g # 将1369至文末中的shell替换为jaden
:%s/old/new/g #搜索整个文件,将所有的old替换为new
:%s/old/new/gc #搜索整个文件,将所有的old替换为new,每次都要你确认是否替换(y/n/a/..),y表示确认替换一个、n表示不替换、a表示全部替换## :w 将缓冲区写入文件,即保存修改到硬盘上,但是不退出vi,如果我们改到一半的时候可以提前保存一下,以防断电,因为新编辑的数据是在内存中的,而且vi不会自动保存。
## :wq 保存修改并退出
## :x 保存修改并退出,和wq一样的效果。
## :q 退出,如果对缓冲区进行过修改,则会提示
## :q! 强制退出,放弃修改
## :wq! 强制保存修改并退出### vi编辑内容原理
注意,如果内存中的数据没有修改,没什么事儿,如果修改了,并且不小心断开连接了,也就是没有正常退出vi,比如我们看一下:

那么这个隐藏文件会一直在硬盘上,当我们再次vi修改jaden.txt的时候,就会看到如下提示信息:

这是提示你,已经有这个 .jaden.txt.swp 文件了。你看到这个提示信息就要考虑一下,是不是自己之前不小心没保存就掉线了,还是说有其他人正在编辑这个文件。如果是自己之前没有保存,那么可以选择删除这个隐藏的swp文件,再编辑就没有这个提示了,这是最简单的方式。或者输入 vi -r jaden.txt 会看到自己之前保存的内容,重新 wq! 保存一下,然后再删除 .jaden.txt.swp 文件即可,自己之前的修改也就还在。 vim编辑的时候会提示如下

## 如果是有其他人在编辑这个文件,你就输入O,表示只读模式打开,E是直接编辑,R是恢复文件,Q是退出不编辑了,A是中止操作。其实还有个D指令,直接删除隐藏文件。## 可以把文件拷贝到物理机,通过物理机的记事本或者nodepad++等编辑器修改,修改完去替换原文件即可。
## 比如xftp就可以帮我们下载文件。但是如果一个比较大的文件,我们只改动一点内容,就可以学学vi,没必要上传下载文件来操作,耗时。## 输出:
## > 输出重定向, 将命令执行结果不输出到屏幕上,输出到文件里,会清空原文件,所以输出的时候一定要注意,文件名称要看好了。
[root@localhost ~]# head -20 services > 2.txt
[root@localhost ~]# cat 2.txt
[root@localhost ~]# seq 100 > 1.txt
[root@localhost ~]# echo 123 > 1.txt
[root@localhost ~]# cat 1.txt
123
## 清空文件内容
[root@localhost ~]# > 1.txt
[root@localhost ~]# cat 1.txt ## >> 输出追加重定向,不会清空原文件
[root@localhost ~]# echo aaaaa >> 2.txt
[root@localhost ~]# cat 2.txt## 如果输出文件还没指定,则自动创建
[root@localhost ~]# cat jaden.txt 1>1.txt 2>2.txt
# 指令正确会将数据保存到1.txt中## 输入:
## < 输入重定向
[root@localhost ~]# cat < jaden.txt > 3.txt # 将jaden.txt的数据输入过来并写入3.txt中
[root@localhost ~]# cat jaden.txt
## << 输入追加重定向(这个就不演示了,遇到了再说)
# 标准输入0,支持用户直接输入内容
[root@localhost ~]# cat << 0
> 1
> 2
> 2222
> 0 ## 输入0就退出
1
2
2222
[root@localhost ~]# cat << 0 > 22.txt ## 给屏幕输入一些内容,并保存到文件里
> a
> b
> ddd
> 0
[root@localhost ~]# cat 22.txt
a
b
ddd希望这篇文章能够为你在探索 Linux系统的道路上提供有力的帮助,让你在操作 Linux 系统时更加得心应手。 我是**
旺仔SeC**,是一名热衷于系统技术的博主,对 Linux系统有着深入的研究和丰富的实践经验。我致力于分享各种系统相关的知识和技巧,帮助大家解决在使用过程中遇到的各种问题。如果你觉得这篇文章对你有所帮助,欢迎点赞、收藏和分享哦同时,也希望你能关注我的博客,我会持续为大家带来更多优质的系统技术文章,包括但不限于 Linux> 系统的深入探索、系统优化、故障排除以及各种有趣的实战案例。 如果你在学习和使用 Linux 系统的过程中遇到任何问题,或者对某些内容有疑问,欢迎在评论区留言,我会尽力为大家解答。让我们一起在系统技术的海洋中遨游,不断提升自己的技能水平,共同探索系统世界的奥秘 再次感谢大家的阅读,期待我们下次再见!