[玩转系统] 关于 PSReadLine
作者:精品下载站 日期:2024-12-14 02:00:33 浏览:13 分类:玩电脑
关于 PSReadLine
简短描述
PSReadLine 在 PowerShell 控制台中提供了改进的命令行编辑体验。
详细描述
PowerShell 7.4 附带 PSReadLine 2.3.4。当前版本是 PSReadLine 2.3.4。当前版本的 PSReadLine 可以在 Windows PowerShell 5.1 及更高版本上安装和使用。对于某些功能,您需要运行 PowerShell 7.2 或更高版本。
PSReadLine 为 PowerShell 控制台提供了强大的命令行编辑体验。它提供:
- 命令行的语法着色
- 语法错误的直观指示
- 更好的多行体验(编辑和历史记录)
- 可定制的按键绑定
- Cmd 和 Emacs 模式
- 许多配置选项
- Bash 样式补全(Cmd 模式下可选,Emacs 模式下默认)
- Emacs 猛拉/杀环
- 基于 PowerShell 令牌的“单词”移动和删除
- 预测智能感知
- 在控制台中动态显示帮助,而不会丢失在命令行中的位置
PSReadLine 需要 PowerShell 5.1 或更高版本。 PSReadLine 可与默认的 Windows 控制台主机、Windows 终端和 Visual Studio Code 配合使用。它在 Windows PowerShell ISE 中不起作用。
PSReadLine 可以从 PowerShell 库安装。要在受支持的 PowerShell 版本中安装 PSReadLine,请运行以下命令。
Install-Module -Name PSReadLine -AllowClobber -Force
笔记
从 PowerShell 7.0 开始,如果检测到屏幕阅读器程序,PowerShell 会在 Windows 上跳过自动加载 PSReadLine。目前,PSReadLine 不能很好地与屏幕阅读器配合使用。 Windows 上 PowerShell 7.0 的默认呈现和格式工作正常。如果需要,您可以手动加载该模块。
预测智能感知
预测性 IntelliSense 是对选项卡完成概念的补充,可帮助用户成功完成命令。它使用户能够根据用户历史记录和其他特定于域的插件的匹配预测来发现、编辑和执行完整命令。
启用预测 IntelliSense
默认情况下,预测式 IntelliSense 处于禁用状态。要启用预测,只需运行以下命令:
Set-PSReadLineOption -PredictionSource History
PredictionSource 参数还可以接受满足域特定和自定义要求的插件。
要禁用预测 IntelliSense,只需运行:
Set-PSReadLineOption -PredictionSource None
笔记
PSReadLine 2.2.6 中默认启用预测式 IntelliSense。有关详细信息,请参阅下面注释部分中的 PSReadLine 发布历史记录。
自定义按键绑定
PSReadLine 支持使用 Set-PSReadLineKeyHandler
cmdlet 进行自定义键绑定。例如,大多数自定义键绑定都会调用可绑定函数之一
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
您可以将 ScriptBlock 绑定到键。 ScriptBlock 几乎可以做您想做的任何事情。一些有用的例子包括
- 编辑命令行
- 打开新窗口(例如帮助)
- 更改目录而不更改命令行
ScriptBlock 接收两个参数:
$key
- 一个 [ConsoleKeyInfo] 对象,它是触发自定义绑定的键。如果你将同一个ScriptBlock绑定到多个按键,并且需要根据按键执行不同的操作,可以勾选$key
。许多自定义绑定都会忽略此参数。$arg
- 任意参数。大多数情况下,这将是用户从键绑定 DigitArgument 传递的整数参数。如果您的绑定不接受参数,则忽略此参数是合理的。
让我们看一个将命令行添加到历史记录而不执行它的示例。当您意识到忘记执行某些操作,但又不想重新输入已经输入的命令行时,这非常有用。
$parameters = @{
Key = 'Alt+w'
BriefDescription = 'SaveInHistory'
LongDescription = 'Save current line in history but do not execute'
ScriptBlock = {
param($key, $arg) # The arguments are ignored in this example
# GetBufferState gives us the command line (with the cursor position)
$line = $null
$cursor = $null
[Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line,
[ref]$cursor)
# AddToHistory saves the line in history, but does not execute it.
[Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)
# RevertLine is like pressing Escape.
[Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
}
}
Set-PSReadLineKeyHandler @parameters
您可以在文件 SamplePSReadLineProfile.ps1
中看到更多示例,该文件安装在 PSReadLine 模块文件夹中。
大多数键绑定使用一些辅助函数来编辑命令行。这些 API 记录在 about_PSReadLine_Functions 中。
笔记
命令历史
PSReadLine 维护一个历史文件,其中包含您从命令行输入的所有命令和数据。历史文件是一个名为 $ ($host.Name)_history.txt
的文件。在 Windows 系统上,历史文件存储在 $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine 中。在非 Windows 系统上,历史文件存储在 $env:XDG_DATA_HOME/powershell/PSReadLine
或 $env:HOME/.local/share/powershell/PSReadLine
中。
历史记录可能包含敏感数据,包括密码。 PSReadLine 尝试过滤掉敏感信息。任何包含以下字符串的命令行都不会写入历史文件。
password
asplaintext
token
apikey
secret
PSReadLine 2.2.0 改进了敏感数据的过滤
- 使用已解析命令行的 PowerShell 抽象语法树 (AST) 来查找敏感数据。
使用 SecretManagement 模块中的安全 cmdlet 允许列表来允许将这些命令添加到历史记录中。允许名单包含:
Get-Secret
Get-SecretInfo
Get-SecretVault
Register-SecretVault
Remove-Secret
Set-SecretInfo
Set-SecretVaultDefault
Test-SecretVault
Unlock-SecretVault
Unregister-SecretVault
例如,允许将以下命令写入历史文件:
Get-Secret PSGalleryApiKey -AsPlainText # Get-Secret is in the allowlist
$token = Get-Secret -Name github-token -Vault MySecret
[MyType]::CallRestAPI($token, $url, $args)
$template -f $token
以下命令不会写入历史文件:
$token = 'abcd' # Assign expr-value to sensitive variable name.
Set-Secret abc $mySecret # Set-Secret is not in the allowlist.
ConvertTo-SecureString stringValue -AsPlainText # '-AsPlainText' is an alert.
Invoke-WebRequest -Token xxx # Expr-value as argument to '-Token'.
Get-ResultFromTwo -Secret1 (Get-Secret -Name blah -AsPlainText) -Secret2 sdv87ysdfayf798hfasd8f7ha # '-Secret2' has expr-value argument.
如果您不想将其他命令写入历史记录文件,可以使用 Set-PSReadLineOption
cmdlet 的 AddToHistoryHandler 参数。有关如何使用 AddToHistoryHandler 的示例,请参阅 Set-PSReadLineOption 的示例 7。
PSReadLine 2.3.4 改进了敏感数据的过滤
改进了默认的敏感历史记录清理,以允许历史记录包含安全的属性访问。
当敏感字符串是属性访问的一部分时:
- 如果此成员访问操作不是分配的一部分,那么我们认为它是安全的
- 否则,如果右侧是管道或变量,我们也认为它是安全的
例如,以下用例被认为是安全的,可以保存到历史记录中。
$a.Secret = Get-Secret -Name github-token -Vault MySecret
$a.Secret = $secret
$a.Password.Secret | Set-Value
$token = (Get-AzAccessToken -ResourceUrl 'https://app.contoso.com').Token
该版本还改进了敏感历史记录清理,以允许使用 az
、gcloud
和 kubectl
命令行工具检索令牌。
例如,以下用例被认为是安全的,可以保存到历史记录中。
kubectl get secrets
kubectl get secret db-user-pass -o jsonpath='{.data.password}' | base64 --decode
kubectl describe secret db-user-pass
az account get-access-token --resource=https://app.contoso.com --query accessToken --output tsv
$env:PGPASS = gcloud auth print-access-token
PSReadLine 发布历史
自 Windows PowerShell 5.1 中发布的版本以来,PSReadLine 已进行了许多更新。
- 当前版本是 PSReadLine 2.3.4
- PowerShell 7.4 附带 PSReadLine 2.3.4
- PowerShell 7.3 附带 PSReadLine 2.2.6
- PowerShell 7.2 附带 PSReadLine 2.1.0
- PowerShell 7.0.11 附带 PSReadLine 2.0.4
- PowerShell 5.1 附带 PSReadLine 2.0.0
有关更改的完整列表,请参阅 PSReadLine 更改日志。
- PSReadLine 2.3.4
除了多个错误修复之外,此版本还包括以下增强功能:
用于预测 IntelliSense 的可滚动 ListView
- 根据终端窗口的大小自动调整大小
- 最多可包含 50 个预测结果
- 显示结果数量和当前预测源的动态列表标题
改进了敏感历史记录清理,以允许从 az
、gcloud
和 kubectl
检索令牌
改进默认的敏感历史记录清理以允许安全的属性访问
添加了对单词大写、小写和大写的支持
使选项卡补全显示 ListItemText
仅大小写不同的结果
在VI编辑模式下支持文本对象命令<d,i,w>
将内联预测的默认颜色更改为暗淡
在 README 中添加一个示例,用于通过 Alt+x
将 Unicode 代码点转换为 Unicode 字符
在 Windows 上添加 TerminateOrphanedConsoleApps 选项,以终止可能会扰乱控制台输入读取的孤立控制台连接进程
PSReadLine 2.2.6
在此版本中,预测 IntelliSense 功能默认启用,具体取决于以下条件:
- 如果支持虚拟终端 (VT) 并且 PSReadLine 在 PowerShell 7.2 或更高版本中运行,则 PredictionSource 设置为
HistoryAndPlugin
History
None
PSReadLine 2.2.5
官方服务版本,修复了一些小错误。
PSReadLine 2.2.2
PSReadLine 添加了两个新的预测性 IntelliSense 功能:
- 添加了 PredictionViewStyle 参数以允许选择新的
ListView
。
- 添加了 PredictionViewStyle 参数以允许选择新的
Microsoft.PowerShell.Pager
获取动态帮助PSReadLine 2.1.0
此版本汇总了自 2.0.4 版本以来添加的以下增强功能:
- 从命令历史记录中添加预测 IntelliSense 建议
PSReadLine 2.0.4
此版本汇总了自 2.0.0 版本以来添加的以下增强功能:
- 向
Get-PSReadLineKeyHandler
添加了-Chord
参数,以允许搜索特定的键绑定
向 PSReadLine 提供反馈和贡献
GitHub 上的 PSReadLine
请随意提交拉取请求或在 GitHub 页面上提交反馈。
参见
- PSReadLine 深受 GNU readline 库的影响。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag