目录
- 一、cmd和powershell
- 二、什么是输入输出重定向
- 三、语法及示例
一、cmd和powershell
大家如果只用过Windows,可能cmd接触的相对多一点。按win +r 输入cmd即可打开。我一般用的是powershell。
cmd:
cmd是command的缩写,即命令提示符。是提示命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。 在windows环境下,命令行程序为cmd.exe
,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统。输入一些命令,cmd.exe可以执行,比如ping url/ip
。它也可以执行BAT文件。
powershell:
PowerShell 是一种跨平台的任务自动化和配置管理框架(在Windows、Linux、macOS、ARM、Docker上都能用),由命令行管理程序和脚本语言组成。 与大多数接受并返回文本的 shell 不同,PowerShell 构建在 .NET
公共语言运行时 (CLR) 的基础之上,接受并返回 .NET 对象
。 这一根本上的改变引入了全新的自动化工具和方法。
学习powershell可以到微软官网,学习地址。现在windows最新的版本是7.3.0。
对比项 | cmd | powershell |
---|---|---|
框框颜色 | 黑色 | 蓝色 |
起用时间 | 1981年 | 2006年 |
适用性 | 仅支持cmd脚本(bat,cmd) | 支持cmd脚本(bat,cmd)和powershell脚本(ps1) |
扩展性 | 仅支持cmd内置函数 | 支持cmd内置函数+powershell cmdlet |
命令别名 | 不支持 | 支持 |
输出内容类型 | 对象 | 文本 |
程序并发 | 支持 | 不支持 |
是否有ISE(编译器) | 有,而且能直接调试 | 无,只有命令行 |
是否支持.net库 | 是 | 否 |
是否支持WMI(监控工具) | 是 | 否 |
是否可以管理微软云资源 | 是 | 否 |
是否支持shell | 是 | 否 |
是否可以运行所有类型程序 | 是 | 否 |
二、什么是输入输出重定向
输入重定向:指的是重新指定设备来代替键盘作为新的输入设备;
输出重定向:指的是重新指定设备来代替显示器作为新的输出设备。
通常是用文件或命令的执行结果来代替键盘作为新的输入设备,而新的输出设备通常指的就是文件。
我暂时只用到了输出重定向,本文对输入重定向只做简单语法说明。
什么时候会用到输出重定向?
- 需要将命令执行结果保存;
- 需要保存命令执行日志;
- 输出太长,cmd或者powershell显示不方便,或者内容超出最大缓冲区大小;
- 其他(上面是我暂时遇到的)…
三、语法及示例
PowerShell 支持重定向以下输出流。
流 | 说明 | 已引入的版本 |
---|---|---|
1 | 成功 流 | PowerShell 2.0 |
2 | 错误 流 | PowerShell 2.0 |
3 | 警告 流 | PowerShell 3.0 |
4 | 详细 流 | PowerShell 3.0 |
5 | 调试 流 | PowerShell 3.0 |
6 | 信息 流 | PowerShell 5.0 |
* | 所有流 | PowerShell 3.0 |
PowerShell 中还有一个 进度 流,但它不支持重定向。
成功和错误流类似于其他 shell 的 stdout 和 stderr 流。 但是,stdin 未连接到用于输入的 PowerShell 管道。
PowerShell 重定向运算符如下所示,其中 n 表示流号
, 成功流 ( 1 ) 为默认值
(如果未指定任何流)。
运算符 | 说明 | 语法 |
---|---|---|
> | 将指定的流发送到文件。 | n> |
>> | 将 指定的流追加到文件中。 | n>> |
>&1 | 将指定的流重定向到 成功 流。 | n>&1 |
示例:
(1)将yt-dlp的帮助文档保存到 help.txt中
yt-dlp -h >help.txt
(2)将yt-dlp -F url 的结果追加到上述help.txt文件中
yt-dlp -F https://www.youtube.com/watch?v=JHNaqr-q3to"&"ab_channel=%EA%BD%83%EB%B9%B5TVGGotBBangTV >>help.txt
其中:
命令1会将命令执行结果保存到help.txt中,没有该文件会自动创建,有该文件则会清除原有内容后再写入;
命令2会将命令执行结果追加到help.txt的末尾;
上述操作都是默认将成功流进行重定向,和 yt-dlp -h 1>help.txt的结果;
yt-dlp是我安装的一个命令行工具,这里只是测试用。
生成的txt文件如下: