当前位置: 首页 > news >正文

Windows 命令提示符(CMD)内容补缺输入输出重定向及管道

大家好,你们可以叫我凌,是个16岁的网络安全学习者。

我们继续来讲操作系统基础,这次的将对上篇内容忘记写的进行补充以及讲解输出输入重定向与管道。

那么废话不多说,我们直接开始吧!


前篇内容遗漏补充

echo 命令——发声器

过会在讲重定向 > 时,我们会反复用 echo 来快速创建带内容的文件,但它本身的功能不止于此。

核心功能:在命令行上“说话”

echo Hello, World!

这条命令会让系统在屏幕上原样输出 Hello, World!。它的核心作用是向“标准输出”发送文本。

输出变量值

echo 可以解析并显示变量,这是调试脚本时最重要的手段。

echo %USERNAME% // 显示当前用户名
echo %PATH% // 显示系统的路径环境变量

% 括起来的部分会被 CMD 解释为变量名,echo 会输出它的值。

创建文件

结合重定向符号 >(覆盖写入)和 >>(追加写入),echo 是生成文本文件的最快方式。

echo 这是第一行 > report.txt
echo 这是追加行 >> report.txt

输出空行

一个很实用的技巧,可以在输出的文本中增加可读性。注意 echo 和 “.” 之间绝对不能有空格。

echo. // 正确,输出一个空行
echo . // 错误,输出 "."

more 命令——分页阅读器

当用 dir 列出一个巨大目录,或用 type 查看一个长日志文件时,屏幕会瞬间被刷满。more 就是用来解决这个痛点的。

核心功能:分页显示

它可以让内容在一屏的末尾停下,等你敲下空格键再翻到下一屏。

# 直接从文件中读取并分页
more C:\Windows\WindowsUpdate.log

# 从管道接收其他命令的输出并分页(最常用的场景)
dir C:\Windows\System32 | more

常用参数
参数功能示例
/c显示每页前先清空屏幕more /c log.txt
/s将连续多个空行压缩显示为一行more /s log.txt
/+n直接从文件的第 n 行开始显示more /+100 log.txt
空格键向下翻一整页/
回车键向下滚动一行/
Q 键立刻退出 more,不再显示后续内容/

输入输出重定向与管道

思考:我们会了用 md、del、copy 等命令对文件和目录进行管理。这些命令执行后,结果都直接显示在屏幕上。但如果我们想把结果保存下来,或者把一个命令的结果直接交给另一个命令去处理,该怎么办?

必须理解的前置概念:标准输入输出

在操作系统眼中,每个正在运行的程序,一出生就自带三条数据通道:

通道名称编号默认方向通俗理解
标准输入0键盘 → 程序程序“听”你说话的地方
标准输出1程序 → 屏幕程序正常“回答”你的地方
标准错误2程序 → 屏幕程序“报错”的地方

理解要点

- 当你敲 dir,文件列表显示在屏幕上——这是 dir 命令把结果通过标准输出(通道1)送给了屏幕。
- 当你敲错命令,出现“不是内部或外部命令”——这是 CMD 通过标准错误(通道2)送给屏幕的报错信息。
- 当一个命令需要你输入(比如输入密码),它就在等待标准输入(通道0)。

重定向,就是人为改变这些通道的默认方向。比如把本该显示在屏幕上的内容存进文件,或者把报错信息单独保存到一个日志里。

> 和 >> 的本质区别

这两个符号都叫“重定向操作符”,作用是把命令的标准输出送到文件里。但它们的区别至关重要。

“>”:覆盖式重定向

命令 > 文件

含义:把命令的标准输出,覆盖写入到指定文件中。

- 如果文件不存在,系统会创建它。
- 如果文件已经存在,系统会**先清空文件内容,再写入新内容**。

实验演示

echo 这是第一行内容 > test.txt
type test.txt

输出:

这是第一行内容

再来一次,写入不同的内容:

echo 这是第二行内容 > test.txt
type test.txt

输出:

这是第二行内容

注意: “这是第一行内容”彻底消失了,被“第二行内容”覆盖了。这就是 > 的覆盖特性。

>>:追加式重定向

命令 >> 文件

含义:把命令的标准输出追加到文件末尾。

- 如果文件不存在,系统会创建它。
- 如果文件已经存在,新内容会接在原有内容的后面,不会删除旧内容。

实验演示

echo 这是第一行内容 > test.txt
echo 这是第二行内容 >> test.txt
type test.txt

输出:

这是第一行内容
这是第二行内容

两行都在, 这就是 “>” 和 “>>” 的核心区别

操作符行为使用场景
>覆盖写入只需要最新的一份数据(如导出当前系统配置)
>>追加写入持续记录日志、累计数据(如审计日志)
标准错误的重定向

标准错误(通道2)有自己的重定向方式:

命令 2> 文件 把错误信息覆盖写入文件
命令 2>> 文件 把错误信息追加写入文件

实验演示

dir 一个不存在的文件夹 > 正常输出.txt 2> 错误信息.txt

- 因为文件夹不存在,dir 报错。
- 报错信息进入了 错误信息.txt。
- 正常输出.txt 被创建了,但内容为空(因为没有正常输出)。

用 type 验证:

type 错误信息.txt

你会看到类似“系统找不到指定的文件”这样的错误信息。

以防万一,再查看“错误信息.txt”文件:

把标准输出和标准错误都放进同一个文件

命令 > 全部.txt 2>&1

2>&1 的含义是:把通道2(标准错误)的流向,指向通道1(标准输出)当前去的地方。因为通道1已经被 > 指向了 全部.txt,所以通道2也跟着进去了。

记忆技巧:“2>&1” 可以理解为“让错误跟着正常输出走”。

注意!这里的“正常输出.txt”内容里面并非空空如也!这里系统将报错以外的内容(即标准输出)仍旧放进了“正常输出.txt”,因此会出现以下内容:

终端助于理解:

管道符 “|”:将两个命令串联起来

如果说重定向是“命令到文件”,管道就是 “命令到命令”。

管道的工作原理

命令A | 命令B

含义:把命令A的标准输出,不显示在屏幕上,而是直接“喂”给命令B,作为命令B的标准输入。

最经典的例子:防止刷屏

dir C:\Windows\System32

这条命令会输出几千个文件名,屏幕瞬间被刷满,你根本来不及看。

使用管道配合 more 命令解决:

dir C:\Windows\System32 | more

more 是个分页显示工具。它接收 dir 的输出,然后一页一页地显示,等你按空格键继续。

more 前面有讲过,这里就不进行描述了

管道 vs 重定向:一句话区分

很多初学者容易混淆。记住这个区分就永远不会错:

操作符功能数据流向
>重定向命令 → 文件
>>追加重定向命令 → 文件
|管道命令 → 命令

管道和重定向可以组合使用

dir C:\Windows | findstr "System" > 结果.txt

这条命令做了什么?

1. dir 列出 C:\Windows 的内容。
2. 管道 | 把输出交给 findstr,只保留包含 "System" 的行。
3. > 把过滤后的结果写入 “结果.txt”。

findstr:CMD 下的文本过滤器

如果说管道是数据的传送带,findstr 就是传送带旁边的质检员。它从输入中逐行读取,只让匹配特定模式的行通过。

基本用法

findstr "关键词" 文件名

示例:

findstr "Failed" system.log

这条命令在 system.log 中搜索所有包含 "Failed" 的行并显示。

当然,Windows并不存在system.log这个东西,我将会创建其他文件进行实验来加深理解

从管道接收数据

findstr 可以不指定文件名,直接从管道接收数据

效果和上面完全一样:type 输出文件内容,管道交给 findstr 过滤。

type system.log | findstr "Failed"

显示当前目录下所有名字里包含 "txt" 的文件和文件夹。

dir | findstr "txt"

显示所有和 443 端口相关的网络连接。这是排查 Web 服务时的常用命令。

netstat -ano | findstr "443"

常用参数详解
参数含义示例应用场景
/i忽略大小写findstr /i "error" log.txt不管日志里写的是 Error、ERROR 还是 error,都能匹配
/v反向匹配:显示不包含关键词的行findstr /v "成功" log.txt排除干扰信息,只看异常的
/c精确匹配整段字符串(包含空格也看作整体)findstr /c:"Access Denied" log.txt关键词有空格时,不用 /c 会被拆开搜索
/n显示匹配行的行号findstr /n "Error" log.txt快速定位日志中错误发生的位置
/s在当前目录及所有子目录中搜索findstr /s "password" *.txt在大量文件中批量搜索敏感信息
/m只显示包含匹配内容的文件名,不显示具体行findstr /m "password" *.txt先看看哪些文件有问题,再逐个细查

参数可以组合使用:

findstr /i /n /c:"access denied" *.log

在所有日志文件中忽略大小写地搜索 "access denied",并显示文件名和行号。


综合实验

任务:用重定向和管道完成一次完整的“日志分析与报告生成”流程。

步骤

第一步:创建实验素材

echo 系统启动成功 > system.log
echo 用户admin登录成功 >> system.log
echo 连接数据库失败:超时 >> system.log
echo 文件上传成功 >> system.log
echo 密码验证失败:用户名或密码错误 >> system.log
echo 用户guest登录失败:账户已禁用 >> system.log
echo 操作完成 >> system.log

第二步:用 findstr 直接过滤

findstr "失败" system.log

你应该看到三行包含“失败”的日志。

第三步:用管道实现同等效果

type system.log | findstr "失败"

效果完全相同,但这种方式更灵活——你可以用任何命令产生文本,然后交给 findstr。

第四步:生成错误汇总报告

echo ======== 错误日志汇总 ======== > 错误汇总.txt
echo 生成时间:%DATE% %TIME% >> 错误汇总.txt
echo. >> 错误汇总.txt
type system.log | findstr /n "失败" >> 错误汇总.txt
echo. >> 错误汇总.txt
echo ======== 汇总完毕 ======== >> 错误汇总.txt

type 错误汇总.txt

第五步:反向过滤——看看正常的日志

type system.log | findstr /v "失败"

第六步:忽略大小写搜索

echo ERROR: 磁盘空间不足 >> system.log
type system.log | findstr /i "error"

注意,我们新增了一个大写的 "ERROR",用 /i 参数后,findstr 会同时匹配 "error" 和 "ERROR"。

第七步:清理实验环境

cd ..
del system.log

http://www.zskr.cn/news/1411833.html

相关文章:

  • 告别迷茫!手把手拆解PCIe Gen1/Gen2物理层数据流(附实战错误排查)
  • 四平 cppm 培训机构中供国培首选 - 中供国培
  • 如何在本地安全导出Cookie文件:Get cookies.txt LOCALLY完整使用教程
  • TVA 对 CV 的代际超越逻辑(3)
  • 告别复制粘贴!用Keil MDK 5.27为GD32F450搭建专属工程模板(保姆级避坑指南)
  • 2026最新大安市黄金回收白银回收铂金回收店铺实力口碑排行榜TOP5;K金+金条+银条+首饰回收靠谱门店及联系方式推荐 - 前途无量YY
  • 别再让静电搞坏你的USB!手把手教你选对TVS管(附电容计算避坑指南)
  • 从‘找不到设备’到‘Hello DCU’:一次DCU-Z100驱动安装的完整排错记录与心得
  • ARM Compiler 6 LTO功能受限问题解析与优化方案
  • 爆款网页背后的秘密!惊艳全球的动效神器,让你的网站“活”过来
  • stm32从模式
  • 终极Wand增强指南:3步免费解锁专业版,开启游戏修改新体验 [特殊字符]
  • 用UGUI ScrollRect打造游戏内公告板/跑马灯:支持悬停暂停与四向滚动的完整配置流程
  • 5个必知技巧:用G-Helper彻底优化华硕笔记本性能
  • Mermaid Live Editor终极指南:5个技巧打造专业图表
  • Keil MDK Pack Installer URL机制与手动安装指南
  • Taotoken的TokenPlan套餐详解与成本控制实践分享
  • 告别「利用率崩溃」:GIPO开启大模型强化学习高效训练新方法 | ICML 2026
  • Arm MTE内存安全机制解析与安全实践
  • 2026最新大石桥市黄金回收白银回收铂金回收店铺实力口碑排行榜TOP5;K金+金条+银条+首饰回收靠谱门店及联系方式推荐 - 前途无量YY
  • 猫抓Cat-Catch:智能化网页媒体资源嗅探工具,如何实现一键式视频音频捕获?
  • AutoBridge:LLM驱动的智能设备自动化集成方案
  • 2026最新大同市黄金回收白银回收铂金回收店铺实力口碑排行榜TOP5;K金+金条+银条+首饰回收靠谱门店及联系方式推荐 - 前途无量YY
  • 终极指南:5步在Mac上解锁QQ音乐加密文件,实现全平台播放自由
  • Blender 3MF插件:3D打印工作流的完整解决方案
  • 别再让服务器偷偷费电了!手把手教你配置PCIe ASPM,轻松降低平台功耗
  • 如何高效使用抖音下载器:3个实用技巧快速获取无水印视频
  • 2026最新大冶市黄金回收白银回收铂金回收店铺实力口碑排行榜TOP5;K金+金条+银条+首饰回收靠谱门店及联系方式推荐 - 前途无量YY
  • 别再只用plot了!用matplotlib的arrow()函数给你的图表加个“导航箭头”,让数据流向一目了然
  • 别再折腾驱动了!一次搞定RTL8822CE在Ubuntu上的WiFi:DKMS持久化安装指南