在PowerShell中是否有!$等价物?

时间:2016-02-08 18:36:44

标签: powershell terminal

在PowerShell中是否有!$等价物?基本上,我希望能够使用像

这样的命令
Tk

然后能够使用类似

的东西
mv *.txt ~\Documents

这应该带我到上一个命令中指定的Documents文件夹。我一直在linux中使用它,它让我觉得它不像PowerShell那样。

谢谢!

编辑:使用$$时,我收到以下错误

cd !$

2 个答案:

答案 0 :(得分:3)

about_automatic_variables可以立即回答您在寻找的内容。

  

$$

     

包含会话收到的最后一行中的最后一个标记。

在实践中,这应该有效。

PS C:\Users\josh.howard\Desktop\test> mv *.mp 'C:\Program Files\LANDesk\ManagementSuite\ldscan'

PS C:\Users\josh.howard\Desktop\test> cd $$

但是在您的情况下,令牌的嵌入式引号存在问题。

  

cd : Cannot find drive. A drive with the name ''C' does not exist.

我可以使用PowerShell v4复制此问题。通常,当您将带引号的字符串发送到像Set-Location这样的cmdlet时,解析器将使用引号,然后将完整路径发送到参数Path。在您的测试用例中使用$$实际上是发送未转义的带引号的字符串!这就是为什么删除它们会使这个过程发挥作用。

cd ($$.Trim("'"))

Bill Stewart has a process to address this issue as well.

这可能已在第5版中解决,但我无法确认这种情况。

  

所以我在Windows 10中对它进行了测试,它似乎在那里工作,但不是在版本4.所以它似乎已经修复,只要你的东西比4更新。

答案 1 :(得分:0)

这是一个与cd一起使用的示例$$函数:

function cd {
  param(
    [String] $path
  )
  Set-Location $path.Trim('"').Trim("'")
}
相关问题