您可以用-Stack
開關訪問使用Get-Location
你的籌碼。作爲一個堆棧的本質,它是LIFO。 Get-Location -Stack
創建System.Management.Automation.PathInfoStack
對象,以便您可以訪問各個堆項目是這樣的:
$stack.ToArray()[-1]
:獲取第一推項目。
$stack.ToArray()[0]
:獲取上次推送的項目。與$stack.Peek()
相同。
所以,答案是沒有內置開關Push-Location
來修改您的堆棧順序,但您可以創建一個函數來做到這一點。請注意,這操縱了默認堆棧。顧名思義,您可以使用Push-Location -StackName MyStack
創建自己的堆棧。您甚至可以使用Set-Location -StackName MyStack
將默認堆棧更改爲您的自定義堆棧。
我沒有找到一種方法來設置堆棧對象,但不使用Pop/Push cmdlet。所以我不得不以一種比我可以...更難的方式來實現它......但是這裏有一個小函數允許你交換堆棧的前兩個路徑。
function Swap-StackTop {
param ($StackName = "default")
$origPath = $PWD
$stack = Get-Location -StackName $StackName
$stackArray = $stack.ToArray()
$last = $stackArray[0]
$beforeLast = $stackArray[1]
$stackArray[0] = $beforeLast
$stackArray[1] = $last
$stackArray | % {Pop-Location}
Set-Location -Path $stackArray[-1].Path
$stackArray[($stackArray.Count-2)..0] | % {
Push-Location $_.Path
}
Push-Location -Path $origPath.Path
}
cd C:\
Push-Location 'C:\Users'
Push-Location 'C:\Program Files'
Push-Location C:\Windows
Get-Location -Stack
輸出:
Path
----
C:\Program Files
C:\Users
C:\
現掉換頂部兩條路徑:
Swap-StackTop
Get-Location -Stack
輸出:
Path
----
C:\Users
C:\Program Files
C:\
這是一個相當不錯的功能:-)希望這是內置的!我傾向於使用env變量和製表符完成導航,但這就像在你的shell上有後退和前進按鈕:-) – 2012-03-28 05:02:13
這看起來很有趣,在某些方面比bash的'push + n'命令提供的swapn功能更好。 – Omnifarious 2012-03-28 22:18:37