将目录更改为Powershell中的上一个目录


31

我是Linux专家,但是我想保持开放的态度,学习一些Powershell。我想念cd -回到上一个目录的功能,例如* nix shells。在Powershell中是否有类似的命令-可以使我返回到以前的目录的命令?


5
如果要用于pushd导航到新目录,则可以popd返回到上一个目录。这适用于Bash,PowerShell甚至是旧版Windows命令行。
鲍勃,

1
相关(尽管不询问Windows,PowerShell或该命令的直接等效物,因此不重复):如何更改为上一个目录而不是向上目录?
鲍勃,

Answers:


19

并非以我所知道的完全相同的方式。一种选择是使用push而不是cd。然后弹出将带您返回。

您还可以更改个人资料,以便每当出现新提示时(基本上是在您按下Enter键时)。它将获得PWD并将其与上一个进行比较。如果它们不同,则将该值放入堆栈中。然后,您将在配置文件中包含另一个名为cdb的函数,该函数将从堆栈中弹出最后一个项目并cd到它。

这听起来很有趣,所以我想出了一个解决方案。将所有这些代码放入您的个人资料(about_Profiles)。

[System.Collections.Stack]$GLOBAL:dirStack = @()
$GLOBAL:oldDir = ''
$GLOBAL:addToStack = $true
function prompt
{
    Write-Host "PS $(get-location)>"  -NoNewLine -foregroundcolor Magenta
    $GLOBAL:nowPath = (Get-Location).Path
    if(($nowPath -ne $oldDir) -AND $GLOBAL:addToStack){
        $GLOBAL:dirStack.Push($oldDir)
        $GLOBAL:oldDir = $nowPath
    }
    $GLOBAL:AddToStack = $true
    return ' '
}
function BackOneDir{
    $lastDir = $GLOBAL:dirStack.Pop()
    $GLOBAL:addToStack = $false
    cd $lastDir
}
Set-Alias bd BackOneDir

现在,您可以像平常一样使用cd,而bd将带您回到位置记录中的位置。


11
或者,你可能只是别名cdpushdbdpopd:P
鲍勃

1
我想到了 我只是更喜欢采用一种新方法,而不是使用标准别名。当然,无论哪个都可以。这将是为什么我提出它作为一个解决方案,而不是解决方案。
EBGreen

我进行了与原始海报完全相同的查询,最后粘贴了@EBGreen提供的函数定义。
nomadrc '16

3

快速而肮脏的解决方案是使用别名cd以及bdto pushdpopd。一个局限性是您不能cd -一遍又一遍地做。

Set-Alias -Name cd -Value pushd  -Option AllScope
Set-Alias -Name bd -Value popd  -Option AllScope

3

只是试图cd -Powershell Core 6.2.2和它的作品:)

cd - 带您回到位置记录

cd + 带您浏览位置记录


2

我已经修改了EBGreen的出色脚本,以便cd-始终将您带到上一个目录,而不用反转历史记录。这样,cd-多次使用将在两个目录之间切换-这是cd -在unix shell上执行的操作。

$GLOBAL:previousDir = ''
$GLOBAL:currentDir = ''
function prompt
{
    Write-Host "PS $(get-location)>"  -NoNewLine -foregroundcolor Green
    $GLOBAL:nowPath = (Get-Location).Path
    if($nowPath -ne $GLOBAL:currentDir){
        $GLOBAL:previousDir = $GLOBAL:currentDir
        $GLOBAL:currentDir = $nowPath
    }
    return ' '
}
function BackOneDir{
    cd $GLOBAL:previousDir
}
Set-Alias cd- BackOneDir

哦,我不得不将提示颜色更改为绿色:)


0

您也可以使用控件r搜索命令历史记录,并找到上次输入cd命令的时间。


这将适用于部分方案。由于我倾向于走相对路径,所以很多时候都行不通。
卡扎克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.