পাওয়ারশেল বনাম ইউনিক্স শেল


14

আমি পাওয়ারশেলের বৈশিষ্ট্যগুলি সম্পর্কে কিছু শুনেছি। এটির কিছুটি ইউনিক্স শেলগুলির বৈশিষ্ট্যগুলির মতো মনে হয়।

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

সুতরাং আমার প্রশ্ন হ'ল: পাওয়ারশেল কি ইউনিক্স শেলের সাথে সমান বা ধারণাটি ভিন্ন?
যদি পরবর্তীকালে: কোন পয়েন্টে ধারণাটি পৃথক হয়?


2
এই প্রশ্নের ইতিমধ্যে Stackoverflow উপর জিজ্ঞাসা করা হয়েছে: stackoverflow.com/questions/573623/powershell-vs-unix-shells
রিচার্ড

উত্তর:


20

পাওয়ারশেল ইউনিক্স শেলগুলির মতো পর্যাপ্তরকম similar ইউনিক্সে ls, rm, cp, mv ইত্যাদির মতো আপনি যে কমান্ড ব্যবহার করেন তা পাওয়ারশেলের কাছে উপকরণ রয়েছে তবে যাইহোক, এলিয়াসগুলির পিছনের সেমিডলেটগুলি যেভাবে কাজ করে তা বেশ আলাদা।

* নিক্স শেল-এ, সমস্ত কিছু পাঠ্য ভিত্তিক হয়, সুতরাং এক কমান্ড থেকে আউটপুট অন্যকে পাইপ করা যায় তবে প্রাপ্তি প্রোগ্রামটি অবশ্যই পাইপলাইন থেকে পাঠটিকে পার্স / ব্যাখ্যা করতে হবে তা অবশ্যই জানতে হবে। পাওয়ারশেল এবং * নিক্স শেলের মধ্যে এটিই মূল পার্থক্য ... পাওয়ারশেলের মধ্যে, যা কিছু ঘটে যায় তা একটি বস্তু।

এর পরিণতি হ'ল এক কমান্ড থেকে অন্য কমান্ডে পাইপিং করা কেবল স্টিডনকে স্টিডিনে পাইপিং নয়। এটি রিসিভারের জন্য একটি পূর্ণাঙ্গ। নেট বস্তুর পাইপ দিচ্ছে। সুতরাং, প্রাপককে কেবল কীভাবে সেই ধরণের কোনও বিষয় পরিচালনা করতে হবে তা জানতে হবে। এটি পাঠ্যের কোনও বিশ্লেষণ কার্যকর করার দরকার নেই, তবে কীভাবে ইনপুট অবজেক্টের পদ্ধতি এবং বৈশিষ্ট্য (সদস্য) কল করতে হবে তা বোঝার দরকার রয়েছে।

* নিক্স কমান্ড লাইন প্রোগ্রামে, আপনি কোড লিখবেন যা স্টিডিন থেকে পড়ে এবং অন্য কোনও প্রোগ্রাম উত্পন্ন প্রোগ্রাম থেকে তার তথ্যটিকে বিশ্লেষণ করে। পাওয়ারশেলে আপনি এমন কিছু করবেন:

function changeName($myObject)
{
    if ($myObject.GetType() -eq [MyType])
    {
        #print the current name to screen
        $myObject.Name
        #change string in the 'name' property
        $myObject.Name = "NewName"
    }
    return $myObject
}

কমান্ড লাইনে এই কোডটি কল করার মতো হতে পারে:

PS> $myObject = New-Object MyType -arg "OriginalName"
PS> $myObject = changeName $myNewObject
OriginalName
PS> $myObject.Name
NewName

আপনি পাইপিং প্রক্রিয়াটি ব্যবহার করে উপরের মতোটিও করতে পারেন তবে আপনি এখানে মূল পার্থক্যটি দেখতে পাচ্ছেন যে আমরা কোনও বস্তুটি পাস করছি এবং পাঠ্যটি নয়:

PS> $myObject = New-Object MyType -arg "OriginalName" | changeName
OriginalName
PS> $myObject.Name
NewName

এই প্রধান পার্থক্যের কথা ভুলে গিয়ে আমি বলব অন্যান্য অতিপরিচয়তা মিল রয়েছে তবে বেশিরভাগই কেবল সিন্টেক্সিকভাবে। পাওয়ারশেল সিনট্যাক্সটি * নিক্স শেল ব্যবহারকারীদের মনে রেখে ডিজাইন করা হয়েছে বলে মনে হয়, তাই অনেক ভাষার স্টাইলই একই রকম।

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