私はLinuxの人ですが、オープンマインドになり、Powershellを学ぼうとしています。cd -
* nixシェルのように、以前のディレクトリに戻ることができません。Powershellに同様のコマンドがあります。以前のディレクトリに戻ることができるコマンドはありますか?
私はLinuxの人ですが、オープンマインドになり、Powershellを学ぼうとしています。cd -
* nixシェルのように、以前のディレクトリに戻ることができません。Powershellに同様のコマンドがあります。以前のディレクトリに戻ることができるコマンドはありますか?
回答:
私が知っているのとまったく同じ方法ではありません。1つのオプションは、cdの代わりにpushdを使用することです。その後、popdが戻ります。
また、新しいプロンプトが表示されるたびに(基本的に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はロケーション履歴のロケーションに戻ります。
cd
へpushd
とbd
へpopd
:P
私が変更したEBGreenの偉大なスクリプトをそれはので、cd-
常にに行くことができます、あなたの履歴を逆転させるのではなく、以前のディレクトリ。このように、cd-
複数回使用すると、2つのディレクトリが切り替わります-これはcd -
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
ああ、私はプロンプトの色を緑に変更しなければなりませんでした:)
pushd
新しいディレクトリに移動するために使用する場合popd
、前のディレクトリに戻ることができます。これは、Bash、PowerShell、および従来のWindowsコマンドラインでも機能します。