কম্পিউটার টিউটোরিয়াল

লিনাক্সে পাওয়ারশেল: আর্লি অ্যাক্সেস ও ক্রস-প্ল্যাটফর্ম সুবিধা

একসময় আমি পাওয়ারশেলের ऊपर একটি আর্টিকেল লিখেছিলাম এর লিনাক্স-মতো বৈশিষ্ট্যগুলোর প্রশংসা করে। সেখানে একটি সুন্দর অ্যানিমেশনও ছিল, সবার আনন্দের জন্য। কয়েক বছর ফরওয়ার্ড, মাইক্রোসফ্ট পাওয়ারশেলকে ওপেন-সোর্স করল এবং লিনাক্সে উপলব্ধ করাল (!), এবং এখন এটি আর্লি টেস্টিং-এর জন্য উপলব্ধ।

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

পাওয়ারশেল সেটআপ

আমার টেস্ট সিস্টেম হল একটি সেন্টওএস ৭.২ Xfce বক্স, এবং এটি সাপোর্টেড লিনাক্স ইনস্ট্যান্সের মধ্যে একটি। মাইক্রোসফ্ট বর্তমানে উবুন্টু, এর দুটি LTS জেনারেশন, এবং সেন্টওএস-র জন্য ইনস্টলার অফার করে। সেটআপ নিখুঁততেই טרিভিয়াল, এমনকি প্যাকেজগুলো ডাউনলোডের জন্য খুঁজে বের করা একটু জটিল। yum দিয়ে লোকালি ইনস্টল করুন, এবং কমান্ড লাইন থেকে লঞ্চ করুন।

yum install powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm


এখন কী?

আমি কোনো এডভান্সড পাওয়ারশেল ইউজার নই। কিন্তু এটি একটি শেল, তাই আপনাকে সিন্ট্যাক্স শিখতে হবে এবং ব্যবহার শুরু করতে হবে। এখন, কি এটি বাশ বা সgeme প্রতিস্থাপন করতে পারে? খুবি, না, কিন্তু সেটিই পয়েন্ট নয়। যাহোক, আমি কিছু বেসিক কমান্ড হামার করলাম, শুধু এটি কীভাবে কাজ করে তার হ্যাং পাওয়ার জন্য।

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

যদি আপনি কষ্ট পান, আপনি হেল্প ইনভোক করতে পারেন: help , অথবা ভালো, get-help -examples, আসলে সঠিক সিন্ট্যাক্স এবং কীভাবে ব্যবহার করা হয় তা দেখতে। এটি খুব হেল্পফুল। কমান্ডগুলো কেস-ইনসেনসিটিভ, যদিও তাদের কিছু ফরম্যাল আপার-কেস নোটেশন আছে সেখানে সেখানে।

কিছু কমান্ড (ক্যামডলেট) ছোট ভার্সনও আছে। উদাহরণস্বরূপ, Get-ChildItem হলো UNIX find-এর সমতুল্য ফাংশনালিটির জন্য একটি বন্ধুহীন নাম, প্লাস এটি gci-তে সংক্ষিপ্তও করা যায়। এটি প্রথমে একটু কনফিউজিং হতে পারে। কিন্তু বেশি নয়।

gci -path /* -include "igor" -recurse

একটা জিনিস যা আপনাকে কনফিউজ করতে পারে—রুট অবশ্যই ট্রেলিং স্ল্যাশ দিয়ে মার্ক করা হয়, কিন্তু অধিকাংশ পাথ-ডিপেন্ডেন্ট কমান্ড সঠিকভাবে কাজ করার জন্য, আপনাকে স্ল্যাশের পর একটি αστেরিস্ক যোগ করতে হয়। গো ফিগার। এখনো আমি বেবি-স্টেপিং করছি ততটাই।

সবকিছু আছে। লুক অ্যান্ড ফীল-এ একটু ভিন্ন—এবং নিঃসন্দেহে নাম-এ, কিন্তু এটি ঠিকঠাক কাজ করতে মনে হয়। শেলটি ফেইরলি স্টেবল ছিল। একটা এক্সসেপশন ছিল যে পাওয়ারশেল হ্যাঙ করলো একটি খুব লম্বা রিকারসিভ ফাইল সার্চের টাইম মেজার করার সময়। এটা শুধু থামলো, কিন্তু আমি এক্সিকিউশন ইন্টারাপ্ট করতে পারলাম।

এররها

পাওয়ারশেল খুব ভার্বোজ এবং এরর-প্রোন, যা অ্যালার্মিং লাগতে পারে, লাল রঙ এবং এররগুলো খুব লম্বা টেক্সট ব্লক হয়ে যায় তার কারণে, উইন্ডোজের মত। কিন্তু আমরা মাসুম জিনিসের কথা বলছি, কমান্ড লাইনে ফাইল সার্চের সময় পারমিশন ডেনাইড এরর جمله।

তারপর, আরেকটা উদাহরণ দিতে চাই, measure-command cmdlet (একভাবে লিনাক্স time-এর সমতুল্য) আর্গুমেন্টগুলো কার্লি ব্র্যাকেটে এনক্লোজ করার প্রয়োজন। আপনি যদি এগুলো মিস করেন, আপনি একটি বড় এরর পাবেন যা খুব প্যানিকি লাগে, কিন্তু আসলে এটি খুব নিরাপদ। অনেক অন্যান্য cmdlet-এর জন্যও একই बात।

এটি শুধু এররের উপরের نصف। আরও আছে।

ফেডোরা ব্যবহারকারীদের কী?

ভালো, আমরা জানি মাইক্রোসফ্ট পাওয়ারশেল রিলিজ করেছে উবুন্টু এবং সেন্টওএস-র জন্য। আমি চিন्तা করছি ফেডোরা ক্লাসিফাই করে কিনা। আসলে, আমি চিন্তা করছি না। আমি টেস্ট করলাম। যেভাবে গেলো, এই ছোট এক্সপেরিমেন্টটি उतना স্মুথ ছিল না যতটা আমি আশা করেছিলাম। ইনস্টলেশনের ঠিক পর, এবং পাওয়ারশেল চালানোর চেষ্টা করার পর, আমি একটি সুন্দর, রসুন্না এরর পেলাম:

powershell
Failed to initialize CoreCLR, HRESULT: 0x80131500

এটি একটি ফেরি জেনেরিক এরর, এবং এই টপিক trên গিটহাবে একটি কফি লম্বা ডিসকাশন উপলব্ধ। যাইহোক, ব্লাইন্ডলি সাজেশন ফলো করার বদলে, আমি প্রথমে কনফার্ম করতে চেসলাম যে সমস্যাটি libicu ডিপেন্ডেন্সি-র সাথে। সেজন্য, আমি strace-এর শক্তিকে ডাকলাম, যা আমার কখনো না বড় होते ডিবাগিং আর্সেনালের সবচেয়ে হ্যান্ডি টুলের একটি।

open("/usr/lib64/libicuuc.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

সত্যিই আমাদের কিছু মিসিং লাইব্রেরি আছে। কথা হলো, এই প্যাকেজটি ফেডোরা-তে উপলব্ধ, শুধু এটি একটি নিউভার ভার্সন যা পাওয়ারশেল এক্সপেক্ট করে। আমি সিম্বলিক লিংক তৈরি করে সমস্যাটি হ্যাক করার চেষ্টা করলাম, এবং এটি একটু সাহায্য করল।

ln -s /usr/lib64/libicui18n.so.56 /usr/lib64/libicui18n.so.50

শেষে, এররটি একটি জেনেরিক স্টার্টআপ প্রব্লেম থেকে শেয়ার্ড অবজেক্টের ভিতরে সিম্বল ইস্যুতে চলে গেল। এবং এটি আপনি আর্বিট্রেরিলি রেজলভ করতে পারবেন না।

powershell
powershell: symbol lookup error: /opt/microsoft/powershell/6.0.0-alpha.9/System.Globalization.
Native.so: undefined symbol: uloc_getDefault_50

সমাধান হচ্ছে libicu-এর পুরনো ভার্সন ডাউনলোড করা, কোথাও এক্সট্রাক্ট করা, এবং তারপর লাইব্রেরি পাথ সেট করা যাতে পাওয়ারশেল libicu ডিপেন্ডেন্সি প্রথমে খুঁজে পায়, উদাহরণস্বরূপ:

export LD_LIBRARY_PATH=/:$LD_LIBRARY_PATH

উপসংহার

এখানে আমরা। ইয়ার ২০১৬, এবং আপনি উইন্ডোজে বাশ রান করতে পারেন, নেটিভলি, এবং লিনাক্সে পাওয়ারশেল রান করতে পারেন, নেটিভলি। না শুধু বব আপনার চাচা, আপনিও ববের চাচা! আমি এই ডেভেলপমেন্টে খুশি। এটি দীর্ঘমেয়াদে সবার সুবিধা করবে।

পাওয়ারশেল আমার তাত্কালিক পছন্দ নয় স্ক্রিপ্টিং টুল, ল্যাঙ্গুয়েজ এবং ফ্রেমওয়ার্ক হিসেবে, কিন্তু এর মেরিট আছে, এবং যারা মাল্টি-ওএস এনভায়রনমেন্ট মেইনটেইন করেন, তাদের জন্য এটি অ্যাডমিনিস্ট্রেশন প্রচুর সিম্পলিফাই করতে পারে। আর্লি আলফা বিল্ড টেস্টিং-এর জন্য যথেষ্ট স্টেবল, কিন্তু আমি স্ট্রংলি রিকমেন্ড করবো हेয়ভি টেস্টিং-এর বিরুদ্ধে, বিশেষ করে রুট পারমিশন সহ, এবং প্রোডাকশন সিস্টেমে। শুধু সেফ সাইডে থাকতে। সব মিলিয়ে, quite all right। যাহোক, তোমরা যাও। আপনার কিবোর্ড দিয়ে ফিডল করার 시간।

চেয়ার্স।

  1. Amazon Linux 2: AWS-এর नेक्सট-জেন এন্টারপ্রাইজ অপারেটিং সিস্টেম

  2. SUSE Studio: নিজের কাস্টম লিনাক্স ডিস্ট্রিবিউশন বানান

  3. উইন্ডোজ ১১ আর্লি রিভিউ: স্লিক ডিজাইন, পারফরম্যান্স চ্যালেঞ্জ এবং ইউজার এক্সপেরিয়েন্স

  4. উইন্ডোজ ১০ এক্সপ্লয়াট প্রোটেকশন – একটি جامع গাইড