在bash(或zsh)中,我输入!$
以获取最后一个命令的最后一个参数,!!
以获取整行,等等。具有相同的(具有相同的)在Powershell中的易用性?我看到PSReadline有 Alt + 。,但在我点击Enter后会寻找扩展的东西。
答案 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
r
是Invoke-History
cmdlet的别名,如果您重视简洁,则可以使用该别名。您会在r
下面看到正在执行的命令。那当然与上面的行匹配。
只要返回一个字符串,假设实际执行它,那么Get-History
将是一个提供的解决方案。虽然在实践中它并不像上面所示的那样简洁。
(Get-History -Count 1).CommandLine
或者为了简洁起见使用别名和明确的参数表示法。
(h -c 1).CommandLine
这将返回输入的最后一个命令。由于History是一个对象集合,我们需要使用该属性来获取我们正在寻找的东西。没有什么能阻止你将它变成一个函数并将它添加到你的个人资料中。
所以这对我来说是新的,我找不到微软参考讨论它。我们最近的是blog post from Shay Levy at PowerShellMagazine。
讨论使用数字符号/尖锐符号将历史命令调用到控制台。要获取最后一个命令,请键入#
,然后按 tab 。
它也响应历史索引。因此,要从PowerShell会话开始获取第3个命令,请键入#3
,然后按选项卡