Je suis un gars de Linux, mais j'essaie d'être ouvert d'esprit et d'apprendre Powershell. Je manque la possibilité de cd -
dans un répertoire précédent, comme dans les coquilles * nix. Existe-t-il une commande similaire dans Powershell, une commande qui me permettrait de revenir à mon répertoire précédent?
Pas exactement de la même façon que je le sache. Une option consiste à utiliser pushd au lieu de cd. Ensuite, popd vous ramènera.
Vous pouvez également modifier votre profil afin que chaque fois qu'une nouvelle invite apparaisse (essentiellement chaque fois que vous appuyez sur Entrée). Il obtiendrait le PWD et le comparerait au précédent. S'ils sont différents, mettez cette valeur sur une pile. Ensuite, vous pouvez inclure une autre fonction dans votre profil appelée quelque chose comme cdb, qui extraira le dernier élément de la pile et y cd.
Cela semblait amusant, alors je suis venu avec une solution . Mettez tout ce code dans votre profil ( 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
Maintenant, vous pouvez cd juste comme d'habitude et bd vous ramènera sur place dans votre historique de localisation.
La solution rapide et incorrecte consiste à alias cd
et bd
à pushd
et popd
. Une limitation est que vous ne pouvez pas faire l'équivalent de cd -
encore et encore.
Set-Alias -Name cd -Value pushd -Option AllScope
Set-Alias -Name bd -Value popd -Option AllScope
J'ai modifié le script génial d'EBGreen afin que cd-
vous emmène toujours vers votre répertoire précédent au lieu d'inverser votre historique . De cette façon, utiliser cd-
plusieurs fois basculera entre deux répertoires - ce que cd -
fait sur les shells unix.
$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
Oh et j'ai dû changer la couleur de l'invite en vert:)