Je suis un adepte de Linux, mais j'essaie d'avoir l'esprit ouvert et d'apprendre un peu de Powershell. La possibilité de cd -
revenir à un répertoire précédent, comme dans les shells *nix. Existe-t-il une commande similaire dans Powershell-one qui me permettrait de revenir au répertoire précédent ?
Réponses
Trop de publicités?Pas exactement de la même manière, à ma connaissance. Une option est d'utiliser pushd au lieu de cd. Ensuite, popd vous ramènera en arrière.
Vous pouvez également modifier votre profil de manière à ce que chaque fois qu'une nouvelle invite s'affiche (en fait, chaque fois que vous appuyez sur la touche Entrée). Il récupère le PWD et le compare au précédent. S'il est différent, il place cette valeur sur une pile. Ensuite, vous incluez une autre fonction dans votre profil, appelée quelque chose comme cdb, qui extrait le dernier élément de la pile et y accède.
Ça avait l'air amusant, alors j'ai trouvé a 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 comme normal et bd vous ramènera sur l'emplacement dans votre historique de localisation.
Je n'ai pas eu de chance avec les cd +/- même si ça devrait fonctionner.
pushd
y popd
existent depuis longtemps et font bien le travail, mais je n'étais pas sûr qu'ils soient officiellement supportés par Powershell - je viens de découvrir qu'ils sont en fait des alias de Push-Location
y Pop-Location
qui sont à jour et prises en charge, semble être la meilleure solution :
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/push-location?view=powershell-7 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/pop-location?view=powershell-7
Suggestion précédente d'utiliser des alias pour remplacer le standard cd
sont une bonne idée, mais dans les scripts, j'utilise le nom réel de la cmdlet pour plus de clarté.
J'ai modifié Le grand script d'EBGreen de sorte que cd-
vous amènera toujours à votre répertoire précédent au lieu de revenir en arrière dans votre historique . De cette façon, en utilisant cd-
plusieurs fois va basculer entre deux répertoires - ce qui est ce que cd -
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 :)
- Réponses précédentes
- Plus de réponses