Zsh بمقابلہ Bash سکرپٹ۔ کیا فرق ہے؟

Zsh بمقابلہ Bash سکرپٹ۔ کیا فرق ہے؟
آپ جیسے قارئین MUO کو سپورٹ کرنے میں مدد کرتے ہیں۔ جب آپ ہماری سائٹ پر لنکس کا استعمال کرتے ہوئے خریداری کرتے ہیں، تو ہم ملحق کمیشن حاصل کر سکتے ہیں۔ مزید پڑھ.

جب بات یونکس جیسے آپریٹنگ سسٹم پر شیل اسکرپٹنگ کی ہو تو دو شیل غلبہ پاتے ہیں: Bash (Bourne Again Shell) اور Zsh (Z Shell)۔ اگر آپ ایک پروگرامر یا سسٹم ایڈمنسٹریٹر ہیں، تو ان دونوں کے درمیان انتخاب آپ کی کارکردگی اور پیداوری کو نمایاں طور پر متاثر کرتا ہے۔





دن کی MUO ویڈیو مواد کے ساتھ جاری رکھنے کے لیے اسکرول کریں۔

ان دو شیلوں کے درمیان فرق اور مماثلت کو سمجھنے سے آپ کو اپنے کمانڈ لائن ورک فلو کو بہتر بنانے میں مدد ملے گی۔ ہر شیل کی باریکیوں کے بارے میں جاننے سے آپ کو باخبر فیصلے کرنے میں مدد ملے گی۔





Bash اور Zsh کیا ہیں؟

باش لینکس اور میکوس سسٹم دونوں پر مقبول ہے۔ یہ ایک طاقتور ٹول ہے جسے آپ آپریٹنگ سسٹم کے ساتھ تعامل کرنے اور کمانڈ چلانے کے لیے استعمال کر سکتے ہیں۔ آپ بھی شیل اسکرپٹنگ کے لیے Bash کا استعمال کریں۔ ، جو ایک سے زیادہ کمانڈ پر مشتمل اسکرپٹ لکھ کر کاموں کو خودکار کرتا ہے۔





Zsh (Z shell) Bash کا ایک توسیعی ورژن ہے جس میں بہت سی مزید خصوصیات ہیں۔ یہ macOS پر ڈیفالٹ شیل ہے۔ یہ لینکس سسٹمز پر بھی تیزی سے مقبول ہوتا جا رہا ہے۔

Bash سے Zsh میں کیسے جائیں۔

اگر آپ لینکس سسٹم استعمال کر رہے ہیں اور Zsh پر جانا چاہتے ہیں تو شروع کریں۔ اسے انسٹال کرنے کے لیے اپنے پیکیج مینیجر کا استعمال کریں۔ . مثال کے طور پر، Debian یا Ubuntu پر، درج ذیل کمانڈ کا استعمال کریں:



 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[0m\] اہم ہے کیونکہ یہ یقینی بناتا ہے کہ رنگ کی تبدیلیاں متن کو متاثر نہیں کرتی ہیں جو پرامپٹ کی پیروی کرتا ہے۔

2. Associative Arrays کے لیے سپورٹ

Zsh مقامی طور پر ایسوسی ایٹیو صفوں کی حمایت کرتا ہے۔ یہ صفیں ڈیٹا کو منسلک کرنے کا ایک آسان طریقہ فراہم کرتی ہیں جو معلومات کو منظم اور بازیافت کرنا آسان بناتی ہے۔ استعمال کریں۔ اعلان -اے واضح طور پر ایک ایسوسی ایٹیو صف کا اعلان کرنے کا حکم:

 # Declare an associative array in Zsh  
declare -A my_assoc_array

اس کے بعد آپ ایسوسی ایٹیو صف کو اقدار تفویض کر سکتے ہیں:

ونڈوز 10 بلیو سکرین کا نازک عمل دم توڑ گیا۔
 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 صرف سٹرنگ کیز کو سپورٹ کرتا ہے۔

Bash کے پہلے ورژن میں، آپ کو کام کرنے کا طریقہ معلوم کرنے کی ضرورت ہے یا آپ کے پاس ایسوسی ایٹیو صفوں کو استعمال کرنے کے لیے بیرونی ٹولز ہیں۔

3. توسیعی گلوبنگ پیٹرنز

توسیعی گلوبنگ پیٹرن مختلف معیاروں کی بنیاد پر فائلوں اور ڈائریکٹریوں کو منتخب کرنے اور ان میں ہیرا پھیری کرنے کا ایک طاقتور اور لچکدار طریقہ فراہم کرتے ہیں۔ جب آپ پیچیدہ فائل ڈھانچے کے ساتھ کام کر رہے ہوں یا جب آپ کو فائل کے انتخاب پر قطعی کنٹرول کی ضرورت ہو تو یہ مفید ہیں۔

Zsh اسکرپٹ میں، آپ ان نمونوں کو استعمال کرکے فعال کرسکتے ہیں۔ setopt کمانڈ. مثال کے طور پر، سب سے ملنے کے لئے .TXT موجودہ ڈائریکٹری میں فائلیں:

 setopt extended_glob 
txt_files=(*.txt)

لاگ ایکسٹینشن والی فائلوں کے علاوہ تمام فائلوں سے مماثل ہونا:

 setopt extended_glob 
non_log_files=^(*.log)

باش میں، آپ کو ان کا استعمال کرتے ہوئے ان کو فعال کرنے کی ضرورت ہے۔ دکانیں کے ساتھ حکم extglob اختیار مثال کے طور پر، سب سے ملنے کے لئے .TXT موجودہ ڈائریکٹری میں فائلیں:

 shopt -s extglob 
txt_files=(*.txt)

کے ساتھ ان کے علاوہ تمام فائلوں سے ملنے کے لئے .log توسیع:

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

Zsh اور Bash کے درمیان بنیادی فرق جب گلوبنگ پیٹرن کی بات آتی ہے تو وہ کمانڈ ہے جو ان کو فعال کرنے کے لیے استعمال ہوتی ہے۔ تاہم، نوٹس کریں کہ کچھ آپریٹرز دو شیلوں کے درمیان مختلف ہیں۔

4. اعلی درجے کی پیرامیٹر کی توسیع

Zsh پیرامیٹرز کی بالواسطہ توسیع کی حمایت کرتا ہے۔ یہ آپ کو ایک متغیر کی قدر کو بڑھانے کی اجازت دیتا ہے جس کا نام کسی دوسرے متغیر میں محفوظ ہے۔ اس کو حاصل کرنے کے لیے، آپ کو متغیر نام کو ایک فجائیہ نقطہ کے ساتھ سابقہ ​​لگانے کی ضرورت ہے۔ ! .

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

دوسری طرف باش مقامی طور پر بالواسطہ توسیع کی اجازت نہیں دیتا ہے۔ اس کا حل استعمال کر رہا ہے۔ eval بلٹ ان کمانڈ یا ${!was} بالواسطہ متغیر حوالہ جات کے لیے نحو۔

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

Bash اور Zsh کے درمیان مماثلتیں۔

اگرچہ Bash اور Zsh کے درمیان اختلافات ہیں، وہ کچھ مماثلتیں بھی بانٹتے ہیں۔

1. کمانڈ لائن نحو

Bash اور Zsh ایک جیسی کمانڈ لائن نحو کا اشتراک کرتے ہیں۔ یہ بہت اچھا ہے کیونکہ اس کا مطلب ہے کہ زیادہ تر کمانڈز اور اسکرپٹ جو آپ لکھتے ہیں وہ کسی بھی شیل میں بغیر کسی ترمیم کے کام کریں گے۔ Zsh Bash کے اوپر بنایا گیا ہے، لہذا اس میں تمام بنیادی کمانڈز اور خصوصیات شامل ہیں۔

تاہم، نحو میں بہت معمولی اختلافات ہیں جن کی شناخت اور ایڈجسٹمنٹ آپ کو کرنے کی ضرورت ہوگی۔

لفظ بدلنے والے کا استعمال کیسے کریں ii

2. کمانڈ متبادل مطابقت

کمانڈ متبادل ایک کمانڈ کے آؤٹ پٹ کو دوسرے میں سرایت کرنے کا عمل ہے۔ یہ دونوں شیلوں کے درمیان مطابقت رکھتا ہے۔

 result=$(ls) 

Bash اور Zsh دونوں میں، آپ استعمال کر سکتے ہیں۔ $(حکم) کسی کمانڈ کے آؤٹ پٹ کو متغیر میں بدلنے کے لیے نحو۔ یہ دونوں شیلوں کے درمیان اسکرپٹ کی آسانی سے نقل پذیری کی اجازت دیتا ہے۔

3. اسکرپٹ ڈیبگنگ آپشن

Bash اور Zsh دونوں استعمال کرتے ہیں۔ -ایکس سکرپٹ ڈیبگنگ کے لیے جھنڈا جب آپ اس جھنڈے کے ساتھ اسکرپٹ چلاتے ہیں، تو یہ ہر کمانڈ کو چلنے سے پہلے دکھاتا ہے۔ اس سے آپ کو اپنے اسکرپٹ میں مسائل کی نشاندہی کرنے میں مدد ملتی ہے۔

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

echo "Debugging Bash script"

اس باش اسکرپٹ میں، the -ایکس پرچم ڈیبگنگ کو قابل بناتا ہے۔ آپ Zsh میں اسی طرح کا طریقہ استعمال کر سکتے ہیں۔ صرف تبدیل کریں bash کے ساتھ zsh .

Zsh اور Bash کے درمیان انتخاب کے لیے غور و فکر

  • مطابقت اور پورٹیبلٹی : Bash بہت سے یونکس پر مبنی سسٹمز پر ڈیفالٹ شیل ہے۔ یہ کراس پلیٹ فارم اسکرپٹنگ کے لیے ایک محفوظ انتخاب بناتا ہے۔ اگر آپ کو بغیر کسی ترمیم کے وسیع رینج کے سسٹمز پر چلانے کے لیے اپنی اسکرپٹس کی ضرورت ہے تو Bash ایک بہتر آپشن ہے۔
  • اسکرپٹ کی پیچیدگی اور اعلی درجے کی خصوصیات : Zsh اعلی درجے کی خصوصیات فراہم کرتا ہے جیسے ایسوسی ایٹیو اری، توسیعی گلوبنگ پیٹرن، اور اعلی درجے کی پیرامیٹر کی توسیع۔ یہ پیچیدہ سکرپٹ کے کاموں کو آسان بناتا ہے۔ اگر آپ کی اسکرپٹس کو ایڈوانس سٹرنگ ہیرا پھیری یا ڈیٹا ڈھانچے کی ضرورت ہوتی ہے تو Zsh ایک بہتر انتخاب ہے۔
  • کمیونٹی اور پلگ ان ایکو سسٹم : Bash اور Zsh دونوں میں ایکٹو کمیونٹیز ہیں، لیکن Zsh کے پاس ایک مضبوط کمیونٹی اور پلگ انز اور تھیمز کا ایک وسیع ماحولیاتی نظام ہے۔ اگر آپ حسب ضرورت کو اہمیت دیتے ہیں تو Zsh کی متحرک کمیونٹی اور پلگ ان سپورٹ ایک اہم فائدہ ہو سکتا ہے۔
  • سیکھنے میں آسانی : اگر آپ شیل اسکرپٹنگ میں نئے ہیں تو، Bash ایک زیادہ قابل رسائی نقطہ آغاز ہے۔ اس میں ابتدائی افراد کے لیے وسیع دستاویزات اور وسائل دستیاب ہیں۔ اس سے شیل اسکرپٹنگ کی بنیادی باتیں سیکھنا آسان ہوجاتا ہے۔

شیل اسکرپٹس کا استعمال کرتے ہوئے خودکار کام

شیل اسکرپٹس کا استعمال کرتے ہوئے کاموں کو خودکار کرنے کا طریقہ جاننا بہت اہمیت کا حامل ہے۔ آپ دہرائے جانے والے کاموں کو خودکار کر سکتے ہیں اور بہت سا وقت بچا سکتے ہیں۔

آپ ان اسکرپٹس کو صارف کے اکاؤنٹس کا نظم کرنے، سسٹم کے وسائل کی نگرانی، ڈیٹا کا بیک اپ لینے اور معمول کی دیکھ بھال کرنے کے لیے بھی استعمال کر سکتے ہیں۔ جب احتیاط سے لکھا جائے تو وہ انسانی غلطی کے امکانات کو بھی کم کر سکتے ہیں۔