在 bash 中,我可以执行Ctrl+R并开始输入命令以让其搜索我的历史记录。
我如何在 powershell 中做到这一点?
有没有办法将键绑定到类似的东西?
function GH($str) {get-history | select-string $str}
但是我需要重新读取每个输入或删除的字符的字符串才能输出匹配的命令,就像Ctrl+R一样。
这可能吗?
答案1
您可以通过采用读取行模块。
参见Hey, Scripting Guy! 博客上的文章关于这个 bash 启发的 PowerShell readline 实现。
特别是,使用Ctrl+ Alt+( Shift)+? 来显示所有键绑定。
PS C:\> $PSVersionTable
Name Value
---- -----
PSVersion 5.0.10240.16384
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.42000
BuildVersion 10.0.10240.16384
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
Ctrl+R
PS C:\> Get-Module -ListAvailable
bck-i-search: mo_
Ctrl+ Alt+(Shift)+S
Key Function Description
--- -------- -----------
Ctrl+r ReverseSearchHistory Search history backwards interactively
Ctrl+s ForwardSearchHistory Search history forward interactively
简而言之:要么手动安装此模块,要么升级到 Windows PowerShell v5。
答案2
输入您的搜索词,然后按 F8,这将搜索您的命令历史记录。
这里有一个非常有用的 PowerShell 快捷方式列表这里。
答案3
答案4
您还可以通过在所查找命令的部分搜索文本前面放置一个 # 字符来启动您的命令,然后按下点击(如果需要可多次)来搜索会话历史记录。