在 bash(或 zsh)中,我键入!$以获取最后一个命令的最后一个参数、!!获取整行等。Powershell 中的等效项(具有相同的易用性)是什么?我看到 PSReadline 有Alt+ .,但正在寻找在我按 Enter 后展开的内容。
如果您查看about_Automatic_Variables,它包含有关如何获取第一个或最后一个参数的详细信息。
- $$:包含会话收到的最后一行中的最后一个令牌。
- $^:包含会话收到的最后一行中的第一个标记。
这应该涵盖了 bash 中的使用!$。下面是它们的使用示例:
PS Z:\> Get-ChildItem c:\temp -Directory
... Output truncated...
PS Z:\> $$
-Directory
PS Z:\> $^
Get-ChildItem
Run Code Online (Sandbox Code Playgroud)
这些只会返回它们所代表的字符串。然而,对于具有超过 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
Run Code Online (Sandbox Code Playgroud)
r是 cmdlet 的别名Invoke-History,如果您重视简洁性,可以使用它。您会看到正下方r是正在执行的命令。这当然与上面的行相符。
至于仅返回一个字符串(假设实际执行它),那么这Get-History将是一个提供的解决方案。尽管在实践中它并不像上面显示的那么简洁。
(Get-History -Count 1).CommandLine
Run Code Online (Sandbox Code Playgroud)
或者为了简洁起见,使用别名和明确的参数表示法。
(h -c 1).CommandLine
Run Code Online (Sandbox Code Playgroud)
这将返回输入的最后一个命令。由于历史记录是一个对象集合,我们需要使用该属性来获取我们要查找的内容。不过,没有什么可以阻止您将其变成一个函数并将其添加到您的个人资料中。
所以这对我来说是新的,我找不到讨论它的 Microsoft 参考资料。最接近的是Shay Levy 在 PowerShellMagazine 上发表的一篇博客文章。
它讨论了使用数字符号/升号将历史命令调用到控制台。要获取最后一个命令,您可以键入#然后点击tab。
它还响应历史索引。因此,要从 PowerShell 会话开始时获取第三个命令,您需要键入#3,然后点击tab
| 归档时间: |
|
| 查看次数: |
1095 次 |
| 最近记录: |