شیل اسکرپٹ کے اندر سے کمانڈ کیسے چلائیں۔

How Execute Commands From Within Shell Script



باز میں ، شیل اسکرپٹ سے احکامات پر عمل کرنا پہلے تھوڑا ڈراؤنا ہوسکتا ہے اور اس میں ایمان کی چھلانگ لگ سکتی ہے۔ بہر حال ، بش اسکرپٹ کے اندر عمل میں آنے والے احکامات انٹرایکٹو نہیں ہوتے ہیں۔ یہاں ہم کمانوں کے بارے میں درج ذیل سوالات کا جواب دیتے ہوئے شیل اسکرپٹ کے اندر سے احکامات پر عملدرآمد کی بنیاد رکھیں گے: وہ کہاں سے آئے ہیں؟ وہ کیا ہیں؟ ہم انہیں اسکرپٹ میں کیسے استعمال کرتے ہیں؟

احکامات کہاں سے آتے ہیں؟

بش میں کمانڈ درج ذیل میں سے کسی بھی زمرے سے آتی ہیں۔







باش خود (بلٹ ان دیکھیں)

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



آپ کے ماحول میں قابل عمل (بیرونی احکامات دیکھیں)

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



صارف کی وضاحت کردہ فنکشن (افعال دیکھیں)

بیرونی احکامات اور بلٹ انز پر عمل کرنے سے پہلے ، بش چیک کرتا ہے کہ آیا کسی فنکشن کی وضاحت کی گئی ہے۔ اگر یہ ہے تو فنکشن کو بطور کمانڈ انجام دیا جاتا ہے۔ اگر ایسا نہیں ہوتا ہے تو ، یہ احکامات کو ترجیح دینے کی ترتیب کو آگے بڑھاتا ہے۔ اسکرپٹ کے باہر بیان کردہ فنکشن کو انجام دینے کے لیے ، انہیں -x وصف کے ساتھ اعلان کیا جانا چاہیے۔ بصورت دیگر ، ان کا استعمال کرتے ہوئے شامل کیا جاسکتا ہے۔ کمانڈ. ہم اس زمرے کے کمانڈ کو صارف کے متعین کردہ افعال یا افعال کو مختصر کہتے ہیں۔





احکامات کیا ہیں۔

کمانڈ کوئی بھی لفظ ہے جسے شیل ماحول میں کسی پروگرام کے داخلے کے ایک نقطہ کے طور پر سمجھا جائے۔ اس صورت میں جب کمانڈ پر عملدرآمد ہوتا ہے ، کمانڈ خود اور اختیاری دلائل پوزیشنیکل پیرامیٹرز کے طور پر ، $ {0} ، $ {1} ، $ {2} ،… کمانڈ خود اور سیاق و سباق میں کوئی تبدیلی نہیں ہے۔ یعنی ، افعال میں پوزیشنیکل پیرامیٹرز کے برعکس ، $ {1} ، $ {2} ،… جو سیاق و سباق کے لحاظ سے بدل سکتا ہے ، $ {0} فنکشن کالز کے درمیان کوئی تبدیلی نہیں ہے۔

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



جاننے کے لیے کمانڈ کی اقسام کی ایک فہرست یہ ہے۔

بلٹ ان کمانڈز۔

یہ بش کائنات کے پہلے درجے کے شہری ہیں ، بشمول حروف جیسے ’’۔ ‘‘: ’’ [‘‘] ’اور مخصوص الفاظ بشمول اعلان میں۔ آپ ان کمانڈز پر گنتے ہیں ، جو کہ بش بلٹ ان کمانڈز کی فہرست میں موجود ہیں ، تاکہ آپ اپنے بش سکرپٹ میں استعمال ہوسکیں۔

آپ کے بش مترجم کے عہدہ اور ورژن نمبر پر منحصر ہے کہ کچھ کمانڈ دستیاب نہیں ہیں۔

بیرونی احکامات۔

بیرونی احکامات قابل عمل ہیں جو بش سکرپٹ کے باہر قابل رسائی ہیں۔ افعال کے برعکس ، بیرونی احکامات متغیر کے طور پر محفوظ نہیں ہوتے ہیں۔

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

bash: unknown-command:کمانڈنہیں ملا

باش اسکرپٹ میں ، افعال بیرونی کمانڈ کے رویے کو اوور رائیڈ کر سکتے ہیں اگر اسی نام کا اشتراک کریں جیسا کہ ہم نے پہلے curl bash مثالوں میں دیکھا ہے۔ فنکشن کا استعمال کرتے ہوئے کسٹم بیرونی کمانڈ کی ایک مثال درج ذیل ہے۔

کرل() {
کمانڈ $ {FUNCNAME}...
}

یہ کام کرتا ہے کیونکہ افعال کو بیرونی احکامات سے زیادہ فوقیت حاصل ہوتی ہے اور یہاں تک کہ بش بلٹینز۔ حد ایک فنکشن نام میں اجازت شدہ حروف ہیں۔

نوٹ کریں کہ مذکورہ بالا مثال کو عرف کا استعمال کرتے ہوئے پورا کیا جاسکتا ہے۔

عرف کرل= '
{
curl ...
}
'

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

افعال

افعال بش میں حکمرانی کرتے ہیں۔ بلٹ انز اور بیرونی کمانڈز کو دیکھنے سے پہلے ، bash چیک کرتا ہے کہ آیا کسی فنکشن کو امیدوار کے فنکشن کے نام سے متعین کیا گیا ہے ، پہلا لفظ کسی لائن پر ظاہر ہوتا ہے یا اس کے بعد؛ کمانڈ لائن کے اختتام کو نامزد کرنے والا کردار۔ صرف استثناء تمام متغیرات میں لکھے گئے بش متغیرات ہیں جیسے $ {FUNCNAME}۔

عرف() { FUNCNAME= asdfباہر پھینک دیا $ {@ ،}؛}
عرف کرل='ٹیسٹ کرل عرف'

سادہ احکامات۔

بش مین پیجز میں سادہ احکامات کو ایک لفظ کے طور پر بیان کیا جاتا ہے جس کے بعد اختیاری دلائل ہوتے ہیں۔ سیاق و سباق میں ، ایک سادہ کمانڈ یا تو بلٹ ، بیرونی کمانڈ ، یا فنکشن ہوسکتی ہے۔

بش سکرپٹ کے اندر سے احکامات پر عملدرآمد کیسے کریں۔

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

باش اسکرپٹ میں فوقیت کو کنٹرول کرنے کے کچھ طریقے یہ ہیں۔

باش کو فیصلہ کرنے دو۔

کمانڈ_ نام

زیادہ تر حصے کے لیے ، خاص طور پر شروع میں ، ہم صرف bash کو فیصلہ کرنے دیتے ہیں کہ کون سا کمانڈ استعمال کرنا ہے۔ تاہم ، ایسے معاملات ہوتے ہیں جب آپ کے ارادے کی تشریح bash کے ذریعے نہیں کی جا سکتی۔ ایسا ہی ہوتا ہے جب فنکشن کے نام اور بیرونی کمانڈ یا بلٹینز اوورلیپ ہوجاتے ہیں۔

بیرونی کمانڈ پر عمل کریں۔

کمانڈکمانڈ_ نام

فرض کریں کہ ایک بیرونی کمانڈ command_name ہے جو انٹرایکٹو موڈ میں دستیاب ہے اور آپ اسے بش اسکرپٹ میں استعمال کرنا چاہتے ہیں۔ ہم واضح طور پر باش کو بتا سکتے ہیں کہ کمانڈ_نام بلٹ ان کمانڈ کا استعمال کرتے ہوئے ایک بیرونی کمانڈ ہے۔

بیرونی کمان کی مثالیں

بیرونی کمان کی مثالیں یہ فرض کرتے ہوئے کہ انسٹال ہیں:

فائل
جاؤ
انجلی
مثال: فائل کی قسم اور معلومات حاصل کریں۔
{ # فائل کی قسم اور معلومات حاصل کریں۔
فائل $ {infile} # (1،2)
}
# (1) کمانڈ ، فائل۔
# (2) infile = {فائل کا راستہ}
مثال: گیٹ میں سٹیج میں ترمیم شدہ اور نئی فائلیں۔
{ گٹ میں # اسٹیج فائلیں۔
git add.# (1)
}
# (1) کمانڈ ، گٹ۔
مثال: انجلی کا استعمال کرتے ہوئے ascii آرٹ بنائیں۔
{ # ascii آرٹ بنائیں۔
انجلی$ {پیغام} # (1،2)
}
# (1) کمانڈ ، انجلی۔
# (2) پیغام = {ascii آرٹ کے طور پر ظاہر کرنے کے لیے پیغام}

بلٹ ان کمانڈ پر عمل کریں۔

بلٹکمانڈ_ نام

فرض کریں کہ کمانڈ نام کمانڈ میں سے ایک ہے جو بلٹ ان باش کے طور پر بیان کیا گیا ہے۔ باش کو یہ بتانے کے لیے کہ ہم کمانڈ_نام کو بطور بلٹ ان چلانا چاہتے ہیں۔

بلٹ ان کمانڈ کی مثالیں۔
مثال: کتنے بلٹ ان؟
بلٹ{،}{،،}{،،} # کتنے بلٹ ان ہیں؟
مثال: پریت کا اعلان۔
{
اعلان() { باہر پھینک دیاافوہ!؛}
اعلانf ایکس ایفاعلان
}

نتیجہ

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