ฉันเป็นคนลินุกซ์ แต่พยายามที่จะเปิดกว้างและเรียนรู้ Powershell บางอย่าง ฉันพลาดความสามารถในการcd -
กลับไปยังไดเรกทอรีก่อนหน้าเช่นใน * nix shells มีคำสั่งที่คล้ายกันใน Powershell ซึ่งเป็นคำสั่งที่อนุญาตให้ฉันกลับไปยังไดเรกทอรีก่อนหน้าได้หรือไม่
ฉันเป็นคนลินุกซ์ แต่พยายามที่จะเปิดกว้างและเรียนรู้ Powershell บางอย่าง ฉันพลาดความสามารถในการcd -
กลับไปยังไดเรกทอรีก่อนหน้าเช่นใน * nix shells มีคำสั่งที่คล้ายกันใน Powershell ซึ่งเป็นคำสั่งที่อนุญาตให้ฉันกลับไปยังไดเรกทอรีก่อนหน้าได้หรือไม่
คำตอบ:
ไม่ใช่ในแบบเดียวกันกับที่ฉันรู้ ทางเลือกหนึ่งคือใช้ pushd แทน 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 จะนำคุณกลับไปที่ตำแหน่งในประวัติตำแหน่งของคุณ
cd
ไปpushd
และbd
ไปpopd
: P
วิธีการแก้ปัญหาสกปรกและรวดเร็วคือการนามแฝงcd
และbd
ไปและpushd
popd
ข้อ จำกัด คือคุณไม่สามารถเทียบเท่าได้cd -
ซ้ำแล้วซ้ำอีก
Set-Alias -Name cd -Value pushd -Option AllScope
Set-Alias -Name bd -Value popd -Option AllScope
เพียงแค่พยายามcd -
บนPowershell Core 6.2.2
และทำงาน :)
cd -
จะนำคุณย้อนกลับไปที่ประวัติตำแหน่งของคุณ
cd +
นำคุณไปข้างหน้าผ่านประวัติตำแหน่งของคุณ
ผมได้ทำการแก้ไขสคริปที่ดี EBGreen ของเพื่อที่cd-
จะนำคุณไปยังไดเรกทอรีก่อนหน้านี้ของคุณแทนของการย้อนกลับของคุณผ่านทางประวัติศาสตร์ ด้วยวิธีนี้การใช้cd-
หลาย ๆ ครั้งจะสลับไปมาระหว่างสองไดเรกทอรี - ซึ่งเป็นสิ่งที่cd -
ทำบนยูนิกซ์เชลล์
$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
โอ้และฉันต้องเปลี่ยน prompt-color เป็น green :)
คุณสามารถค้นหาประวัติคำสั่งของคุณด้วย control r และค้นหาเวลาก่อนหน้านี้ที่คุณป้อนคำสั่ง cd
pushd
เพื่อนำทางไปยังไดเรกทอรีใหม่คุณสามารถpopd
กลับไปยังไดเรกทอรีก่อนหน้า สิ่งนี้ใช้ได้ใน Bash, PowerShell และแม้แต่บรรทัดคำสั่ง Windows ดั้งเดิม