私はLinuxの男ですが、オープンマインドでPowershellを学ぼうとしています。 cd -
* nixシェルのように、前のディレクトリに戻ります。 Powershellに同様のコマンドはありますか?以前のディレクトリに戻ることができますか?
私が知っているのとまったく同じ方法ではありません。 1つのオプションは、cdの代わりにpushdを使用することです。その後、popdが戻ります。
新しいプロンプトが表示されたとき(基本的にEnterキーを押したとき)になるようにプロファイルを変更することもできます。 PWDを取得し、それを以前のものと比較します。それらが異なる場合は、その値をスタックに入れます。次に、cdbのような名前の別の関数をプロファイルに含め、スタックから最後の項目をポップしてcdします。
これは楽しそうだったので、aソリューションを思いつきました。このすべてのコードをプロファイルに追加します( 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 -
オン Powershell Core 6.2.2
と動作します:)
cd -
ロケーション履歴を元に戻します
cd +
ロケーション履歴を表示します
すばやく簡単な解決策は、cd
およびbd
をpushd
およびpopd
にエイリアスすることです。制限として、cd -
に相当する操作を何度も繰り返すことはできません。
Set-Alias -Name cd -Value pushd -Option AllScope
Set-Alias -Name bd -Value popd -Option AllScope
私は 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
ああ、私はプロンプトの色を緑に変更する必要がありました:)
また、コントロールrを使用してコマンド履歴を検索し、cdコマンドを入力した前回の時間を見つけることもできます。