Zsh বনাম ব্যাশ স্ক্রিপ্টিং। পার্থক্য কি?

Zsh বনাম ব্যাশ স্ক্রিপ্টিং। পার্থক্য কি?
আপনার মত পাঠকরা MUO সমর্থন করতে সাহায্য করে। আপনি যখন আমাদের সাইটে লিঙ্ক ব্যবহার করে একটি ক্রয় করেন, আমরা একটি অনুমোদিত কমিশন উপার্জন করতে পারি। আরও পড়ুন

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





দিনের MUO ভিডিও কন্টেন্টের সাথে চালিয়ে যেতে স্ক্রোল করুন

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





Bash এবং Zsh কি?

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





আমি কিভাবে আমার আইফোনে ফোন কল রেকর্ড করতে পারি?

Zsh (Z শেল) হল ব্যাশের একটি বর্ধিত সংস্করণ যাতে আরও অনেক বৈশিষ্ট্য রয়েছে। এটি macOS-এ ডিফল্ট শেল। এটি লিনাক্স সিস্টেমেও ক্রমশ জনপ্রিয় হয়ে উঠছে।

কিভাবে Bash থেকে Zsh এ স্যুইচ করবেন

আপনি যদি একটি লিনাক্স সিস্টেম ব্যবহার করেন এবং Zsh এ স্যুইচ করতে চান, তাহলে শুরু করুন এটি ইনস্টল করতে আপনার প্যাকেজ ম্যানেজার ব্যবহার করে . উদাহরণস্বরূপ, ডেবিয়ান বা উবুন্টুতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:



 sudo apt install zsh

আপনার সিস্টেমে এটি ইনস্টল করার পরে, নিম্নলিখিত কমান্ডটি চালিয়ে এটিতে স্যুইচ করুন:

 chsh -s $(which zsh)

আপনি যদি macOS ব্যবহার করেন, Zsh ইতিমধ্যেই ইনস্টল করা আছে। এটিতে স্যুইচ করতে নিম্নলিখিত কমান্ডটি চালান:





 chsh -s /bin/zsh

Bash-এ ফিরে যেতে, উপরের কমান্ডগুলিতে Zsh-এর পরিবর্তে Bash-এ পরিবর্তন করুন।

আপনি কোন শেল ব্যবহার করছেন তা পরীক্ষা করতে, নিম্নলিখিত কমান্ডটি চালান:





 echo $SHELL

এটি আপনাকে নিশ্চিত করতে সাহায্য করবে যে আপনি যে শেলটি ব্যবহার করতে চান তা ব্যবহার করছেন।

Zsh এবং Bash এর মধ্যে পার্থক্য

Zsh এবং Bash এর মধ্যে বেশ কিছু পার্থক্য রয়েছে। এই পার্থক্যগুলি বিবেচনা করা আপনাকে কোন শেলটি আপনার জন্য সবচেয়ে উপযুক্ত তা নির্ধারণ করতে সহায়তা করবে।

1. প্রম্পট কাস্টমাইজেশন

Zsh ব্যবহার করে আপনার প্রম্পট কাস্টমাইজ করার একটি সহজ উপায় অফার করে % - ভিত্তিক পালানোর ক্রম। এটি রঙ এবং তথ্য সহ গতিশীল প্রম্পটগুলির জন্য অনুমতি দেয়। আপনার শেল প্রম্পট কাস্টমাইজ করতে, সংজ্ঞায়িত করুন PS1 (প্রাথমিক প্রম্পট)।

 PS1="%F{green}%n@%m %F{blue}%~ %f$ " 

উপরের কাস্টম প্রম্পট ব্যবহারকারীর নাম, হোস্টনাম এবং বর্তমান ডিরেক্টরি বিভিন্ন রঙে প্রদর্শন করে:

  টার্মিনালে Zsh প্রম্পট কাস্টমাইজেশন

এখানে অনেক Zsh প্রম্পট কাস্টমাইজ করার অন্যান্য উপায় , আপনাকে একটি প্রশাসক সূচক সেট করতে দিন, তারিখ এবং সময় অন্তর্ভুক্ত করুন এবং নতুন প্রম্পট সংরক্ষণ করুন৷

প্রম্পট কাস্টমাইজেশনের ক্ষেত্রে Bash একটি সামান্য ভিন্ন পদ্ধতি ব্যবহার করে। এটি প্রম্পটে রঙ এবং ফর্ম্যাটিং পরিবর্তনগুলি নির্দিষ্ট করতে এস্কেপ কোড ব্যবহার করে। উপরের Zsh এর মতো একই কাস্টমাইজেশন অর্জন করতে, আপনি নিম্নলিখিত কাস্টম প্রম্পট ব্যবহার করতে পারেন।

 PS1="\[3[32m\]\u@\h \[3[34m\]\w \[3[0m\]$ " 

ব্যবহার \[3[0মি\] এটি অত্যন্ত গুরুত্বপূর্ণ কারণ এটি নিশ্চিত করে যে রঙের পরিবর্তনগুলি প্রম্পট অনুসরণকারী পাঠকে প্রভাবিত করে না।

2. অ্যাসোসিয়েটিভ অ্যারেগুলির জন্য সমর্থন

Zsh নেটিভভাবে সহযোগী অ্যারে সমর্থন করে। এই অ্যারেগুলি ডেটা সংযুক্ত করার একটি সুবিধাজনক উপায় প্রদান করে যা তথ্য সংগঠিত করা এবং পুনরুদ্ধার করা সহজ করে তোলে। ব্যবহার করুন ঘোষণা -ক স্পষ্টভাবে একটি সহযোগী অ্যারে ঘোষণা করার কমান্ড:

আপনি কি PS4 এ PS3 খেলতে পারেন?
 # Declare an associative array in Zsh  
declare -A my_assoc_array

তারপরে আপনি সহযোগী অ্যারেতে মান নির্ধারণ করতে পারেন:

 my_assoc_array=(key1 value1 key2 value2) 

এবং, অবশেষে, তাদের কী ব্যবহার করে মানগুলি অ্যাক্সেস করুন:

 echo $my_assoc_array[key1] # Outputs: value1

ব্যাশ সহযোগী অ্যারের জন্য নেটিভ সমর্থন অন্তর্ভুক্ত করেছে সংস্করণ 4.0 থেকে। আপনি Zsh-এ যেভাবে মান ঘোষণা করেন এবং বরাদ্দ করেন। কিন্তু যখন অ্যারের মানগুলি অ্যাক্সেস করার কথা আসে, তখন আপনাকে কোঁকড়া বন্ধনীর ভিতরে কীটি মোড়ানো দরকার:

 echo "${my_assoc_array[key1]}" 

প্রধান পার্থক্য হল যে অ্যাসোসিয়েটিভ অ্যারেগুলির জন্য Zsh-এর সমর্থন Bash-এর তুলনায় আরও বৈশিষ্ট্য সমৃদ্ধ এবং উন্নত। Zsh অ্যাসোসিয়েটিভ অ্যারেকে শুধু স্ট্রিং নয়, বিভিন্ন ধরনের ডেটার কী থাকতে দেয়। Bash শুধুমাত্র স্ট্রিং কী সমর্থন করে।

ব্যাশের পূর্ববর্তী সংস্করণগুলিতে, আপনাকে সমাধানের উপায় বের করতে হবে বা সহযোগী অ্যারে ব্যবহার করার জন্য বাহ্যিক সরঞ্জাম থাকতে হবে।

3. বর্ধিত গ্লোবিং প্যাটার্নস

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

একটি Zsh স্ক্রিপ্টে, আপনি ব্যবহার করে এই নিদর্শনগুলি সক্ষম করতে পারেন setopt আদেশ যেমন সব মিলে যাওয়া .txt বর্তমান ডিরেক্টরিতে ফাইল:

 setopt extended_glob 
txt_files=(*.txt)

.log এক্সটেনশন সহ সমস্ত ফাইলের সাথে মেলে:

 setopt extended_glob 
non_log_files=^(*.log)

ব্যাশে, আপনাকে ব্যবহার করে তাদের সক্ষম করতে হবে দোকান সঙ্গে কমান্ড extglob বিকল্প যেমন সব মিলে যাওয়া .txt বর্তমান ডিরেক্টরিতে ফাইল:

 shopt -s extglob 
txt_files=(*.txt)

সঙ্গে যারা ছাড়া সব ফাইল মেলে লগ এক্সটেনশন:

 shopt -s extglob 
non_log_files=!(*.log)

Globbing প্যাটার্নের ক্ষেত্রে Zsh এবং Bash এর মধ্যে প্রধান পার্থক্য হল তাদের সক্ষম করার জন্য ব্যবহৃত কমান্ড। যাইহোক, লক্ষ্য করুন যে কিছু অপারেটর দুটি শেলের মধ্যে আলাদা।

আপনি কি PS4 এ গেম ফেরত দিতে পারেন?

4. উন্নত প্যারামিটার সম্প্রসারণ

Zsh প্যারামিটারের পরোক্ষ প্রসারণ সমর্থন করে। এটি আপনাকে একটি ভেরিয়েবলের মান প্রসারিত করতে দেয় যার নাম অন্য একটি ভেরিয়েবলে সংরক্ষণ করা হয়। এটি অর্জন করতে, আপনাকে একটি বিস্ময়বোধক বিন্দু সহ পরিবর্তনশীল নামের উপসর্গ করতে হবে ! .

 name="foo" 
result="${!name}"
echo "$result"

অন্যদিকে ব্যাশ স্থানীয়ভাবে পরোক্ষ বিস্তারের অনুমতি দেয় না। এই জন্য সমাধান ব্যবহার করা হয় eval অন্তর্নির্মিত কমান্ড বা ${!ছিল} পরোক্ষ পরিবর্তনশীল রেফারেন্সের জন্য সিনট্যাক্স।

 name="world" 
var="name"
echo ${!var} # This will output: world

Bash এবং Zsh এর মধ্যে মিল

Bash এবং Zsh এর মধ্যে পার্থক্য থাকলেও, তারা কিছু মিলও ভাগ করে নেয়।

1. কমান্ড লাইন সিনট্যাক্স

Bash এবং Zsh একটি অনুরূপ কমান্ড লাইন সিনট্যাক্স শেয়ার করে। এটি দুর্দান্ত কারণ এর অর্থ হল আপনার লেখা বেশিরভাগ কমান্ড এবং স্ক্রিপ্ট পরিবর্তন ছাড়াই শেলে কাজ করবে। Zsh ব্যাশের উপরে তৈরি করা হয়েছে, তাই এটিতে একই মৌলিক কমান্ড এবং বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে।

তবে, সিনট্যাক্সে খুব ছোটখাটো পার্থক্য রয়েছে যা আপনাকে সনাক্ত করতে এবং সামঞ্জস্য করতে হবে।

2. কমান্ড প্রতিস্থাপন ধারাবাহিকতা

কমান্ড প্রতিস্থাপন হল একটি কমান্ডের আউটপুটকে অন্য কমান্ডে এম্বেড করার প্রক্রিয়া। এটি উভয় শেলের মধ্যে সামঞ্জস্যপূর্ণ।

 result=$(ls) 

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

3. স্ক্রিপ্ট ডিবাগিং বিকল্প

Bash এবং Zsh উভয়ই ব্যবহার করে -এক্স স্ক্রিপ্ট ডিবাগিং জন্য পতাকা. আপনি যখন এই পতাকা দিয়ে একটি স্ক্রিপ্ট চালান, এটি চালানোর আগে প্রতিটি কমান্ড প্রদর্শন করে। এটি আপনাকে আপনার স্ক্রিপ্টে সমস্যা চিহ্নিত করতে সাহায্য করে।

 # Debugging a script in both Bash and Zsh 
#!/bin/bash -x

echo "Debugging Bash script"

এই বাশ স্ক্রিপ্টে, -এক্স পতাকা ডিবাগিং সক্ষম করে। আপনি Zsh এ অনুরূপ পদ্ধতি ব্যবহার করতে পারেন; শুধু প্রতিস্থাপন বাশ সঙ্গে zsh .

Zsh এবং Bash-এর মধ্যে নির্বাচন করার জন্য বিবেচনা

  • সামঞ্জস্য এবং বহনযোগ্যতা : Bash অনেক ইউনিক্স-ভিত্তিক সিস্টেমে ডিফল্ট শেল। এটি ক্রস-প্ল্যাটফর্ম স্ক্রিপ্টিংয়ের জন্য এটিকে একটি নিরাপদ পছন্দ করে তোলে। পরিবর্তন ছাড়াই বিস্তৃত সিস্টেমে চালানোর জন্য আপনার স্ক্রিপ্টের প্রয়োজন হলে, Bash একটি ভাল বিকল্প।
  • স্ক্রিপ্ট জটিলতা এবং উন্নত বৈশিষ্ট্য : Zsh অ্যাসোসিয়েটিভ অ্যারে, বর্ধিত গ্লোবিং প্যাটার্ন এবং উন্নত প্যারামিটার সম্প্রসারণের মতো উন্নত বৈশিষ্ট্য সরবরাহ করে। এটি জটিল স্ক্রিপ্টিং কাজগুলিকে সরল করে। যদি আপনার স্ক্রিপ্টগুলির জন্য উন্নত স্ট্রিং ম্যানিপুলেশন বা ডেটা স্ট্রাকচারের প্রয়োজন হয়, তাহলে Zsh একটি ভাল পছন্দ।
  • কমিউনিটি এবং প্লাগইন ইকোসিস্টেম : Bash এবং Zsh উভয়েরই সক্রিয় সম্প্রদায় রয়েছে, কিন্তু Zsh এর একটি শক্তিশালী সম্প্রদায় এবং প্লাগইন এবং থিমের একটি বিস্তৃত ইকোসিস্টেম রয়েছে৷ আপনি যদি কাস্টমাইজেশনকে মূল্য দেন Zsh এর প্রাণবন্ত সম্প্রদায় এবং প্লাগইন সমর্থন একটি উল্লেখযোগ্য সুবিধা হতে পারে।
  • শেখার সহজ : আপনি যদি শেল স্ক্রিপ্টিং-এ নতুন হন, তাহলে ব্যাশ হল আরও অ্যাক্সেসযোগ্য স্টার্টিং পয়েন্ট। এটি নতুনদের জন্য উপলব্ধ ব্যাপক ডকুমেন্টেশন এবং সম্পদ আছে. এটি শেল স্ক্রিপ্টিংয়ের মূল বিষয়গুলি শিখতে সহজ করে তোলে।

শেল স্ক্রিপ্ট ব্যবহার করে স্বয়ংক্রিয় কাজ

শেল স্ক্রিপ্ট ব্যবহার করে কাজগুলি কীভাবে স্বয়ংক্রিয় করতে হয় তা জানা অত্যন্ত গুরুত্বপূর্ণ। আপনি পুনরাবৃত্তিমূলক কাজগুলি স্বয়ংক্রিয় করতে পারেন এবং প্রচুর সময় বাঁচাতে পারেন।

আপনি ব্যবহারকারীর অ্যাকাউন্টগুলি পরিচালনা করতে, সিস্টেম সংস্থানগুলি নিরীক্ষণ করতে, ডেটা ব্যাক আপ করতে এবং রুটিন রক্ষণাবেক্ষণ করতে এই স্ক্রিপ্টগুলি ব্যবহার করতে পারেন। সাবধানে লেখা হলে, তারা মানুষের ভুলের সম্ভাবনাও কমাতে পারে।