পাওয়ারশেলের পূর্ববর্তী ডিরেক্টরিতে ডিরেক্টরি পরিবর্তন করুন


29

আমি একজন লিনাক্স লোক, তবে আমি মুক্তমনা হওয়ার চেষ্টা করছি এবং কিছু পাওয়ারশেল শিখছি। আমি cd -আগের ডিরেক্টরিতে ফিরে আসার ক্ষমতাটি মিস করি , যেমন * নিক্স শাঁসের মতো। পাওয়ারশেল-এ কি এমন কোনও কমান্ড রয়েছে যা আমাকে আমার আগের ডিরেক্টরিতে ফিরে যেতে দেয়?


5
আপনি যদি pushdকোনও নতুন ডিরেক্টরিতে নেভিগেট করতে ব্যবহার করেন তবে আপনি আগেরটিতে popdফিরে যেতে পারেন। এটি ব্যাশ, পাওয়ারশেল এমনকি লিগ্যাসি উইন্ডোজ কমান্ড লাইনেও কাজ করে।
বব

1
সম্পর্কিত (যদিও উইন্ডোজ, পাওয়ারশেল বা এই কমান্ডের প্রত্যক্ষ সমতুল্য সম্পর্কে জিজ্ঞাসা করা হচ্ছে না, সুতরাং সঠিক সদৃশ নয়): কীভাবে আমি পূর্ববর্তী ডিরেক্টরিতে না গিয়ে বদলে যেতে পারি?
বব

উত্তর:


19

আমি ঠিক যে ফ্যাশন সম্পর্কে সচেতন তা নয়। একটি বিকল্প সিডির পরিবর্তে পুশড ব্যবহার করা। তারপরে পপড আপনাকে ফিরিয়ে নেবে।

আপনি নিজের প্রোফাইলটিও পরিবর্তন করতে পারেন যাতে যখনই নতুন প্রম্পট আসে (মূলত যখনই আপনি প্রবেশ করান)। এটি পিডব্লিউডি পেতে এবং এটি আগেরটির সাথে তুলনা করবে। যদি সেগুলি পৃথক হয়, তবে সেই মানটিকে একটি স্ট্যাকের মধ্যে রাখুন। তারপরে আপনি নিজের প্রোফাইলে আরেকটি ফাংশন অন্তর্ভুক্ত করবেন যার নাম সিডিবি যা শেষ আইটেমটিকে স্ট্যাকের বাইরে ফেলে এবং এটিতে সিডি করে।

এটি মজাদার মতো শোনাচ্ছে তাই আমি একটি সমাধান নিয়ে এসেছি । এই সমস্ত কোডটি আপনার প্রোফাইলে রাখুন ( সম্পর্কে_পরিচয়গুলি )।

[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

এখন আপনি সাধারণের মতো সিডি করতে পারেন এবং বিডি আপনাকে আপনার অবস্থানের ইতিহাসে আবার ফিরিয়ে নিয়ে যাবে।


11
অথবা, আপনি পারা শুধু ওরফে cdকরতে pushdএবং bdকরতে popdপি:
বব

1
আমি এটা সম্পর্কে চিন্তা। আমি কেবলমাত্র একটি স্ট্যান্ডার্ড ওরফে দিয়ে বানরের ক্ষেত্রে একটি নতুন পদ্ধতি তৈরি করা পছন্দ করি। যাকে পছন্দ হয় তা অবশ্যই ঠিক is যে হতে কেন আমি এটি হিসাবে উপস্থাপিত হবে একটি সমাধান বদলে সমাধান।
ইবিগ্রিন

আমি আসল পোস্টার হিসাবে ঠিক একই তদন্ত ছিল, এবং @EBGreen দ্বারা প্রদত্ত ফাংশন সংজ্ঞা পেস্ট শেষ।
nomad.rc

3

দ্রুত এবং ময়লা সমাধান ওরফে হয় cdএবং bdকরতে pushdএবং popd। একটি সীমাবদ্ধতা হ'ল আপনি cd -বারবার সমতুল্য করতে পারবেন না ।

Set-Alias -Name cd -Value pushd  -Option AllScope
Set-Alias -Name bd -Value popd  -Option AllScope

2

আমি ইবিগ্রিনের দুর্দান্ত স্ক্রিপ্টটি পরিবর্তন করেছি যাতে এটি 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

ওহ এবং আমাকে প্রম্পট-রঙ সবুজ করতে হয়েছে :)


0

শুধু চেষ্টা cd -করে দেখে Powershell Core 6.2.2কাজ করে :)

cd - আপনাকে আপনার অবস্থানের ইতিহাসের মধ্য দিয়ে নিয়ে যায়

cd + আপনাকে আপনার অবস্থানের ইতিহাসের মাধ্যমে এগিয়ে নিয়ে যায়

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.