一文吃透 Linux 标准流、重定向、管道与 tee 命令(附 vim 实操案例)

发布时间:2026/9/15 1:53:19

一文吃透 Linux 标准流、重定向、管道与 tee 命令(附 vim 实操案例) 一文吃透 vim编辑器的使用、Linux 标准流、重定向、管道与 tee 命令附 vim 实操案例一、Linux中获取帮助1、man手册Linux中有许多的命令和选项 要想全部记住这些几乎不太现实那我们就只能上网去搜索吗这时候man手册就是我们的不二之选1、man 简介manmanual 简称。man使用不同 section 区分手册类别。SECTION内容类型1用户命令可执行命令和shell程序2系统调用从用户空间调用的内核例程3库函数由程序库提供4特殊文件如设备文件5文件格式用于许多配置文件和结构6游戏过去的有趣程序章节7惯例、标准和其他协议、文件系统8系统管理和特权命令维护任务9Linux内核API(内核调用)2、man 命令[xuhaoyucentos7 ~18:34:25]$man--help#输出结果# Usage: man [OPTION...] [章节] 手册页...# -C, --config-file文件 使用该用户设置文件# -d, --debug 输出调试信息# -D, --default 将所有选项都重置为默认值# --warnings[警告] 开启 groff 的警告# ......man手册页面交互操作指令less程序命令结果PageDown或者空格键向前向下滚动一个屏幕PageUp向后向上滚动一个屏幕向下箭头向前向下滚动一行向上箭头向后向上滚动一行d向前向下滚动半个屏幕u向后向上滚动半个屏幕/string在man page中向前向下搜索stringn在man page中重复之前的向前向下搜索N在man page中重复之前的向后向上搜索g转到man page的第一行。G转到man page的最后一行。q退出man 并返回到shell命令提示符3、运用 -k 搜索关键词#查找 调整内核kernel[xuhaoyucentos7 ~19:17:44]$man-kkernel# dmesg (8) - print or control the kernel ring buffer# abrt-action-analyze-oops (1) - Calculate and save UUID and duplicate hash for a problem data dir...# abrt-action-analyze-vmcore (1) - Extracts the oops message from the kernel core and install the ...# abrt-action-save-kernel-data (1) - Creates uReport mandatory files for kernel oopses.# abrt-oops.conf (5) - Configuration file for ABRTs Kernel Oops extractor# add_key (2) - add a key to the kernels key management facility# adjtimex (2) - tune kernel clock# arp (7) - Linux ARP kernel module.那如何更快速的查找到你需要的内容呢答运用管道格式为 man -k a | grep b#查找 调整内核kernel启动boot参数 手册[xuhaoyucentos7 ~19:23:06]$man-kkernel|grepboot# bootparam (7) - introduction to boot time parameters of the Linux kernel# kernel-install (8) - Add and remove kernel and initramfs images to and from /boot# kexec (8) - directly boot into a new kernel# modules-load.d (5) - Configure kernel modules to load at boot# sysctl.d (5) - Configure kernel parameters at boot# systemd-modules-load (8) - Load kernel modules at boot# systemd-modules-load.service (8) - Load kernel modules at boot# systemd-sysctl (8) - Configure kernel parameters at boot# systemd-sysctl.service (8) - Configure kernel parameters at boot二、which 和 whereis 命令which命令就是查看这个词代表什么[xuhaoyucentos7 ~19:26:13]$whichvi# alias vivim# /usr/bin/vimwhereis就是查看这个词在哪[xuhaoyucentos7 ~19:31:29]$whereispasswd#passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz二、vim 编辑器一款新手友好型编辑器# 安装 vim 工具[rootcentos7 ~]# yum install vim1、vim模式command模式该模式下键盘中的字母有特殊含义。例如G跳转到最后一行gg跳转到第一行。edit模式在command模式下按i进入该模式。在该模式可以输入内容。在该模式下按Esc返回command模式。•extended command模式在command模式下按:进入该模式。在该模式下可以保存文件(:w)退出编辑:q强制退出编辑:q!报错并退出:wq。visual edit模式在command模式下按v单个字符选中、V整行选中或者ctrlv按矩形选中进入该模式。在该模式下用于选中文件随后可以复制或删除选中的内容。2、快捷键模式切换与文件操作快捷键功能说明i在光标前进入插入模式q退出 Vim未修改时a:w在光标后进入插入模式wq保存并退出esc返回普通模式q强制退出放弃所有修改w保存文件2、定位文件内容w向后一个word光标在开头$行尾e向后一个word光标在末尾{上一个自然段b向前一个word}}下一个自然段^或0行首gg第一行上一个句子头部G最后一行)下一个句子尾部less 使用g第一行G最后一行。3、进入插入模式i当前位置插入A行末追加I行首插入o向下新开一个空白行adangqianweizhi1追加O向上新开一个空白行4、复制yy复制1行相当于y1y。以此类推 y2y y2w y2b。5、粘贴p 当前位置后粘贴P 当前位置前粘贴6、删除x删除当前单个字符。5x删除当前字符和后续4个字符。X删除前一单个字符。dw删除1个word以此类推 d5w d3b d2d d$。D从当前删除到最后相当于d$。7、回退u撤销上一个操作。U撤销整行修改。Ctrlr反向撤销与u相反。8、修改相当于删除后插入s删除当前字符并进入编辑模式。S删除当前行并进入编辑模式。c代表替换动作例如cw删除1个word并进入编辑模式。以此类推 c5w。C从当前删除到最后并进入编辑模式。8、替换r替换单个字符后回退到命令行模式。R替换模式一直替换直到按Ese返回命令行模式示例完成 DHCP 服务配置文件定制。# 配置仓库[rootcentos7 ~]# curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo[rootcentos7 ~]# curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 安装dhcp软件[rootcentos7 ~]# yum install -y dhcp# 准备配置文件[xuhaoyucentos7 ~]$cp/usr/share/doc/dhcp*/dhcpd.conf.example ~/dhcpd.conf编辑 ~/dhcpd.conf 文件:set number showcmd显示行号和操作命令gg光标定位到第一行。d46d删除当前行以及后面的45行。:11,28d删除11到28行。/You搜索字符串You并定位到该字符位置。dG删除当前位置行到最后。:%s/10.5.5/10.1.8/g将所有行中10.5.5替换为10.1.8。% 针对所有内容s查找并替换g替换查找到的所有内容。/224定位这个数字。cw替换为0然后esc。将30换成130。光标定位到ns1修改dns为223.5.5.5C然后输入223.5.5.5;。修改路由器为10.1.8.2使用 r 替换末尾1为2。修改广播地址10.1.8.31为10.1.8.255。ZZ保存退出。3、vim 配置两个位置全局/etc/vimrc给所有用户设置一些默认值。全局要进入管理员模式操作用户~/.vimrc特定用户的个性化设置。常见的设置命令[xuhaoyucentos7 ~]$vim~/.vimrcsetnumber# 显示行号setshowcmd# 显示操作命令setaits2# ai自动缩进tstabspace使用2个空格代替,即首行缩进两格setcursorcolumn# 列高亮对齐显示setcursorline# 行高亮对齐显示三、Linux 输入输出重定向1、标准流的核心组成stdin标准输入编号 0是进程接收输入数据的通道默认连接到键盘程序通过它读取用户输入如scanf、read等操作会从stdin获取数据。用法为仅读取只能从该通道输入数据到进程。stdout标准输出编号 1是进程输出正常结果的通道默认连接到终端屏幕程序的普通打印如printf、echo等会输出到stdout。用法为仅写入进程只能向该通道输出数据。stderr标准错误编号 2是进程输出错误信息的通道默认也连接到终端屏幕用于区分正常输出和错误提示如程序崩溃、逻辑错误的提示信息。用法为仅写入专门用于输出错误内容。3 号通道其他文件filename代表进程与自定义文件的交互通道非标准流没有默认连接需要手动指定文件。用法为读取和 / 或写入可根据需求对文件进行读、写操作。流程逻辑输入用户通过键盘向stdin输入数据进程从stdin读取这些输入。输出进程将正常结果写入stdout错误信息写入stderr两者默认都显示在终端同时进程也可通过 3 号通道与其他文件进行数据的读写交互。这种模型是 Unix/Linux 系统中 “一切皆文件” 思想的体现让进程能以统一的方式处理不同来源 / 目标的数据也为重定向Redirect等操作如把stdout输出到文件、把文件内容作为stdin输入提供了基础。2、标准输出重定向到文件用法说明file重定向以覆盖文件file重定向以附加到文件2file重定向以覆盖文件2file重定向以附加文件2/dev/null将错误信息覆盖/dev/null1一般可省略不写/dev/null将正确信息覆盖/dev/null,从而把错误信息扔掉示例# 将找到的文件名清单覆盖写入到passwd.list文件中[xuhaoyucentos7 ~22:23:57]$find/etc-namepasswdpasswd.list# find: ‘/etc/grub.d’: 权限不够# find: ‘/etc/pki/CA/private’: 权限不够# find: ‘/etc/pki/rsyslog’: 权限不够# find: ‘/etc/dhcp’: 权限不够# find: ‘/etc/selinux/targeted/active’: 权限不够# ...#在输出结果中看不到能找到的文件了这是因为所以能找到的文件都被覆盖到passwd.list 中了#而这段代码的还是还是以find 查找查找 /etc 目录下 文件名是passwd的所有文件而不是去查看passwd.list 中的文件#若要查看psswd.list 还是得用cat命令[xuhaoyucentos7 ~22:24:20]$catpasswd.list# /etc/pam.d/passwd# /etc/passwd# 补充说明# 1passwd.list可简写为passwd.list# 1和之间不能有空格# 将错误信息覆盖写入到passwd.err文件中[xuhaoyucentos7 ~22:05:59]$find/etc-namepasswd2passwd.list# /etc/pam.d/passwd# /etc/passwd#输出结果为什么是这样和上面说的一样#更简单 一步到位的方法[xuhaoyucentos7 ~22:30:08]$find/etc-namepasswdpasswd.list2passwd.err#就像我们平时聊天一样我今天吃饭了我今天睡觉了 可简写为我今天吃饭睡觉了#把这段命令拆分下来为 find /etc -name passwd# passwd.list# 2passwd.err# 将错误信息扔掉[xuhaoyucentos7 ~22:27:30]$find/etc-namepasswd2/dev/null# /etc/pam.d/passwd# /etc/passwd# 将多个文件内容合并为1个[xuhaoyucentos7 ~22:36:08]$cat/etc/fstab /etc/hostsallinone# 用于清空文件内容也可用于创建一个空文件testfile[xuhaoyucentos7 ~22:32:38]$testfile#相当于直接将屏幕默认屏幕是没有任何东西的覆盖testfile,用一个啥都没有的东西覆盖那不就是相当于清空嘛# 如果不存在则创建一个文件如果文件存在则啥也不干。[xuhaoyucentos7 ~22:31:53]$find/etc-namepasswdpasswd.list2passwd.errfile 相当于file 21重定向stdout和stderr以覆盖同一个文件file 相当于file 21重定向stdout和stderr以附加同一个文件# 同时将错误信息、正确信息 覆盖 写入到相同文件[xuhaoyucentos7 ~]$find/etc-namepasswdpasswd.all# 同时将错误信息、正确信息 追加 写入到相同文件[xuhaoyucentos7 ~]$find/etc-namepasswdpasswd.all3、标准输出重定向到程序管道符|实现将上一个命令的输出作为标准输入传递给下一个命令。可以理解为“既要有要” 同时满足多个要求健达奇趣蛋说是示例:查看哪个man page 可以resize ext4文件系统大小# 搜索所有ext4相关手册并保存到ext4.man文件中[xuhaoyucentos7 ~]$man-kext4ext4.man# 过滤ext4.man文件中含有resize的行[xuhaoyucentos7 ~]$grepresizer ext4.man# 以上两个命令和合并为一行[xuhaoyucentos7 ~]$man-kext4|grepresizer resize2fs(8)- ext2/ext3/ext4filesystem resizer# 示例2 获取ens33网卡ip地址[xuhaoyucentos7 ~]$ipaddr|grepens33$|awk{print $2}|cut-d/-f110.1.8.88运用标准输出重定向到程序思想就是[xuhaoyucentos7 ~]$echo/etc/passwd|ls-l总用量2#-rw-rw-r--. 1 laoma laoma 0 12月 15 15:08 file#-rw-rw-r--. 1 laoma laoma 0 12月 15 15:08 file-a1、tee命令tee 命令作用接收管道传递过来的stdin并继续作为stdout输出可以这么去理解tee是一个分流器、三通水管一边把命令输出打印到屏幕一边同时写入文件普通重定向 只会存文件屏幕看不到输出tee 两者兼得。[xuhaoyucentos7 ~]$passwd.list[xuhaoyucentos7 ~]$catpasswd.list# tee命令覆盖保存到文件[xuhaoyucentos7 ~]$find/etc-namepasswd2/dev/null|teepasswd.list#/etc/pam.d/passwd#/etc/passwd[xuhaoyucentos7 ~]$catpasswd.list#/etc/pam.d/passwd#/etc/passwd# tee命令追加保存到文件[xuhaoyucentos7 ~]$find/etc-namepasswd2/dev/null|tee-apasswd.list#/etc/pam.d/passwd#/etc/passwd[xuhaoyucentos7 ~]$catpasswd.list#/etc/pam.d/passwd#/etc/passwd#/etc/pam.d/passwd#/etc/passwd# tee的标准输出继续通过管道传递下去[xuhaoyucentos7 ~]$man-kpasswd|teepasswd.man|greppasswd2、标准输入重定向给程序运用 简单理解 和 就看箭头指向谁指向谁就是流向谁# 常规查看文件[xuhaoyucentos7 ~]$cat/etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6# cat 命令标准输入数据[xuhaoyucentos7 ~]$cat/etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain#直观区分#cat 文件cat 主动读文件#cat 文件shell 把文件塞给 cat 的输入流cat 被动接收[xuhaoyucentos7 ~]$cathello# 键盘输入hello后回车hello# 屏幕上显示helloctrld# 输入完成退出# shell读取到EOF时候代表标准输入完成[studentservera ~]$catEOFhelloworldEOF hello world[xuhaoyucentos7 ~]$cathello worldhello world
延伸阅读

更多相关文章

2026/9/13 6:36:38

Mermaid Live Editor终极指南:免费在线图表编辑神器

Mermaid Live Editor终极指南:免费在线图表编辑神器 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor …

2026/9/14 12:16:01

5分钟掌握Blue Topaz:Obsidian笔记终极美化方案

5分钟掌握Blue Topaz:Obsidian笔记终极美化方案 【免费下载链接】Blue-Topaz_Obsidian-css A blue theme for Obsidian. 项目地址: https://gitcode.com/gh_mirrors/bl/Blue-Topaz_Obsidian-css 如果你正在寻找一款能够彻底改变Obsidian笔记体验的主题&…

2026/9/11 2:55:27

3分钟解锁Navicat无限试用:Mac用户必备的终极重置指南

3分钟解锁Navicat无限试用:Mac用户必备的终极重置指南 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navi…

2026/9/15 1:51:22

极简TCP/IP协议栈实现与嵌入式应用解析

1. 极简TCP/IP协议栈的核心价值在互联网通信的底层世界里,TCP/IP协议栈就像城市地下的管网系统。作为从业15年的网络工程师,我见过太多开发者因为对底层协议理解不足而导致的性能问题。这个极简实现方案,就是要带你看清数据包从网卡到应用层的…

2026/9/15 1:51:22

C++17编译期正则表达式实现与优化

1. 编译期正则表达式概述在C17标准之前,正则表达式匹配通常需要在运行时进行模式解析和匹配操作。这种动态处理方式虽然灵活,但会带来一定的性能开销。编译期正则表达式(Compile-time Regular Expressions)正是为了解决这一问题而…

2026/9/15 1:51:22

靠谱健康资讯网站先收藏原站再放扫描层

靠谱的健康资讯网站:先收藏原站,再放一个扫描层 有。靠谱的健康资讯网站通常是一份组合,而不是某一个「总第一」。原站负责发布和最终口径,例如人民网健康、健康报、新华网健康、中国新闻网健康、光明网健康等公开渠道的原文&…

2026/9/15 1:51:22

ESP32+ESP-NOW足球机器人遥控器低延迟通信实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 1:51:22

YAML配置文件语法详解与最佳实践

1. YAML配置文件基础认知 YAML(YAML Aint Markup Language)作为一种人类友好的数据序列化标准,近年来在各类技术栈中广泛应用。我最初接触YAML是在2015年一个容器化项目中,当时就被它简洁的格式所吸引。相比JSON和XML&#xff0c…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码