← 返回博客 学习笔记 Linux RHCE RHCE:IO管道和Vim编辑器高级特性 2026年07月04日 · 54 阅读 ## IO管道和输入输出 IO --> input / output 输入/输出 Linux中的输入输出设备:键盘、显示屏 键盘是输入设备(stdin),显示屏是输出设备(stout) **重定向:将原来的标准输出或输入重定向到某个文件里** ``` 标准输出重定向,会覆盖重定向文件的内容 echo 123 > file 标准输出重定向,会追加文件内容 echo 123 >> file 标准错误输出重定向,会向文件输出错误(在前面加2) LS 2> file 标准错误输出重定向,会向文件追加错误(在前面加2) LS 2>> file 标准输出和错误输出全部重定向 ls &> file ls > file 2>$1 ``` ## Linux系统比较特殊的设备 `/dev/null`黑洞,垃圾桶(放到此设备的信息无法找回,通常在shell脚本用的较多) `/dev/zero`0字符设备(用来填充文件大小的,一般用于测试,无实际意义) ``` 使用0字符设备创建一个10M大小的名为test.txt的文件 dd if=/dev/zero of=test.txt bs=10M count=1 ``` ### 输入重定向 将原来键盘上输入的内容改变为通过文件进行输入 ``` 将密码保存至passwd文件中,通过passwd文件进行修改密码 passwd user < passwd 将密码保存至passwd文件中,通过passwd文件进行修改密码 passwd --stdin user < passwd ``` *** ## 管道符 `|` 连接管道两端的命令,作用是将管道前面的输出结果,作为管道后的输入参数 格式:command1 | command2 | command3 ``` 修改user的密码 echo 12345 | user --stdin user ``` **管道符只能接受标准输出,无法接受错误输入** `tee` 三通管道: 格式:command1 | tee file | command2 将command1的执行结果保存在file文件中,再将command1的结果作为command2的参数输入 常常适用于排错场景,想要输出到屏幕又想保存到文件中 ``` 将ifconfig的输出保存在ip.txt中,并使用grep过滤想要的信息显示到终端上 ifconfig | tee ip.txt | grep net ``` ### 使用cat一键生成配置文件,发送多行输入 ``` cat > test.txt <<EOF >a >b >c >EOF ``` EOF字符没有特殊要求,前后EOF对应上即可,前面是什么符号,结束时什么符号 *** ## 疑问 **我想知道stdin < 和<<的区别** 简单说: ### `<`(输入重定向) 把**文件内容当作标准输入 stdin** ``` command < file.txt ``` 等价于:让命令“从 file.txt 读输入”。 例如: ``` wc -l < a.txt ``` → 统计 a.txt 行数(把文件喂给 wc) --- ### `<<`(Here Document) 不是读文件,而是**在命令行里直接“写一段输入内容”给 stdin** ``` command << EOFline1line2EOF ``` 意思是:把 EOF 之间的内容当作输入传给 command。 例如: ``` cat << EOFhelloworldEOF ``` 输出: ``` helloworld ``` --- ### 核心区别一句话 - `<`:从**文件**读输入 - `<<`:从**命令行写入一段文本**作为输入 --- ### 再帮你压缩记忆 - `<` = file → stdin - `<<` = inline text → stdin *** ## vim编辑器高级特性 vi编辑器:原生态自带 vim编辑器:vi的高级版本,由软件包 vim-enhanced提供 gvim编辑器:图形化编辑器,由软件包vim-X11提供 ### 三种模式 命令模式:可以对文件的内容复制、粘贴、过滤关键字等操作 插入模式:就是编辑模式,标准的编辑内容 退出模式:可以保存、退出、另存为等操作 ### vim恢复丢失的文件 使用编辑器编辑文件时,比如异常关闭等,会在当前目录留下一个.swap文件供恢复 ## 命令模式的使用 ### 光标的使用 翻页:Page down/up 或 Ctrl+F/B 行内跳转:Home/End 行间跳转:gg/G/#G(#G是跳转到文件的第#行) 行号显示:set nu/set nonu vim的快捷键非常多,非常多,我只记了些我目前能用上的,vim的基础建议还是要打好的 # Vim 常用命令速查表 ## 🟢 基础模式 | 模式 | 说明 | |------|------| | Normal | 默认模式(命令模式) | | Insert | 编辑文本 | | Visual | 选择文本 | | Command | 执行命令(: 开头) | --- ## 🟡 进入/退出 | 操作 | 命令 | |------|------| | 打开文件 | `vim file.txt` | | 进入插入模式 | `i` | | 在当前行后插入 | `a` | | 在行首插入 | `I` | | 退出插入模式 | `Esc` | | 保存 | `:w` | | 退出 | `:q` | | 强制退出 | `:q!` | | 保存并退出 | `:wq` 或 `ZZ` | --- ## 🟡 光标移动(核心) | 操作 | 命令 | |------|------| | 左/下/上/右 | `h j k l` | | 行首 | `0` | | 行尾 | `$` | | 文件首行 | `gg` | | 文件末行 | `G` | | 跳到第 N 行 | `:N` | | 向下翻页 | `Ctrl + f` | | 向上翻页 | `Ctrl + b` | --- ## 🟡 编辑操作 | 操作 | 命令 | |------|------| | 删除字符 | `x` | | 删除整行 | `dd` | | 删除多行 | `Ndd` | | 复制整行 | `yy` | | 粘贴 | `p` | | 撤销 | `u` | | 重做 | `Ctrl + r` | | 替换一个字符 | `r + char` | --- ## 🟡 查找与替换 | 操作 | 命令 | |------|------| | 查找 | `/keyword` | | 下一个 | `n` | | 上一个 | `N` | | 替换当前行 | `:s/old/new` | | 全文替换 | `:%s/old/new/g` | --- ## 🟡 选择模式(Visual) | 操作 | 命令 | |------|------| | 进入字符选择 | `v` | | 行选择 | `V` | | 块选择 | `Ctrl + v` | | 复制选中 | `y` | | 删除选中 | `d` | --- ## 🟡 实用技巧(很重要) | 操作 | 命令 | |------|------| | 显示行号 | `:set nu` | | 关闭行号 | `:set nonu` | | 跳到指定行 | `:N` | | 重复上一次命令 | `.` | | 自动补全 | `Ctrl + n` | --- ## 🧠 Vim核心思想(一定要记住) - Vim = “命令驱动编辑器” - Normal模式 = 核心工作区 - Insert模式 = 只负责输入文字 - 所有操作都是“组合命令” --- ## 🚀 新手最重要三件事 1. 不要一直用 Insert(学会 Esc 回 Normal) 2. 熟练 `h j k l` 3. 熟练 `dd yy p u` --- ← 上一篇 RHCE:文件权限管理 下一篇 → RHCE:高级文本处理