在 Linux Shell 中,powershell 中与 `pushd +0` 或不带参数的 `pushd` 等效的是什么

在 Linux Shell 中,powershell 中与 `pushd +0` 或不带参数的 `pushd` 等效的是什么

祝你好运+0:)我确实在这个论坛和 stackoverflow 上搜索了大约 30 分钟,但没有找到答案。

Linux有以下命令:

pushd +0

要不就

pushd

毫无争论。

哪个掉期当前目录和 pushd 堆栈的顶部。

我在 powershell 中找不到等效项。当然,我可以编写一个脚本(如下)。

我读完了powershell 中关于、、的所有get-help内容。也许我错过了。set-locationget-locationpush-locationpop-location

我认为缺少的功能是既不push-location采用pop-location任何类型的索引。

Get-Location -Stack | Get-Member

表明堆栈TypeName: System.Management.Automation.PathInfoStack不仅仅是一个数组。因此,它有一个.peek()查看顶部的索引,但没有索引。可以:

(Get-Location -Stack).ToArray()[0]
(Get-Location -Stack).ToArray()[1]

访问各种索引,但仍然无法执行交换。

您不能在不更改该目录的情况下执行push-location或。并且您不能对堆栈条目执行(除非使用上面的索引语法),这将设置,而不执行推送或弹出。ppo-locationset-location

那么有没有什么办法可以做到这一点?

或者必须编写脚本(函数/cmdlet)才能执行此操作?对于 Linux Shell 中内置的功能来说,这似乎很麻烦。

脚本原型演示可能是:

PS C:\> mkdir \tmp1
PS C:\> mkdir \tmp2

PS C:\> cd \tmp1
PS C:\tmp1> pushd \tmp2
PS C:\tmp2> pushd \

PS C:\> Get-Location -Stack
   
Path  
----  
C:\tmp2
C:\tmp1

PS C:\> # script beg
PS C:\> $prvloc = Get-Location
PS C:\> $newloc = Pop-Location -PassThru
PS C:\tmp2> cd $prvloc
PS C:\> Push-Location $newloc;
PS C:\tmp2> # script end
PS C:\tmp2> Get-Location -Stack
   
Path  
----  
C:\   
C:\tmp1

相关内容