相似的PowerShell历史扩展?

时间:2015-04-06 08:52:17

标签: powershell

在bash(或zsh)中,我输入!$以获取最后一个命令的最后一个参数,!!以获取整行,等等。具有相同的(具有相同的)在Powershell中的易用性?我看到PSReadline有 Alt + ,但在我点击Enter后会寻找扩展的东西。

1 个答案:

答案 0 :(得分:4)

如果查看about_Automatic_Variables,它会包含有关如何获取第一个或最后一个参数的详细信息。

  
      
  • $$ :包含会话收到的最后一行中的最后一个令牌。
  •   
  • $ ^ :包含会话收到的最后一行中的第一个令牌。
  •   

这应该包括在bash中使用!$。以下是它们的使用示例:

PS Z:\> Get-ChildItem c:\temp -Directory

... Output truncated...

PS Z:\> $$
-Directory

PS Z:\> $^
Get-ChildItem

那些只会返回它们代表的字符串。但是,对于具有3个以上令牌的命令,它不是很有用。

至于!!,你有一个选择:

调用-历史

更多关于TechNet的使用,但最简单的形式

PS Z:\> Get-Item c:\temp
   Directory: C:\
Mode                LastWriteTime     Length Name                                                                                                            
----                -------------     ------ ----                                                                                                            
d----          4/1/2015   3:06 PM            temp                                                                                                            

PS Z:\> r
Get-Item c:\temp

    Directory: C:\
Mode                LastWriteTime     Length Name                                                                                                            
----                -------------     ------ ----                                                                                                            
d----          4/1/2015   3:06 PM            temp    

rInvoke-History cmdlet的别名,如果您重视简洁,则可以使用该别名。您会在r下面看到正在执行的命令。那当然与上面的行匹配。

GET-历史

只要返回一个字符串,假设实际执行它,那么Get-History将是一个提供的解决方案。虽然在实践中它并不像上面所示的那样简洁。

(Get-History -Count 1).CommandLine

或者为了简洁起见使用别名和明确的参数表示法。

(h -c 1).CommandLine

这将返回输入的最后一个命令。由于History是一个对象集合,我们需要使用该属性来获取我们正在寻找的东西。没有什么能阻止你将它变成一个函数并将它添加到你的个人资料中。

PowerShell历史记录选项卡完成

所以这对我来说是新的,我找不到微软参考讨论它。我们最近的是blog post from Shay Levy at PowerShellMagazine

讨论使用数字符号/尖锐符号将历史命令调用到控制台。要获取最后一个命令,请键入#,然后按 tab

它也响应历史索引。因此,要从PowerShell会话开始获取第3个命令,请键入#3,然后按选项卡