باش ہسٹری کمانڈز اور ایکسپینشنز

Bash S Ry Kman Z Awr Aykspynshnz



اس گائیڈ میں، ہم دکھائیں گے کہ باش ہسٹری کمانڈز کے ساتھ کیسے کام کیا جائے۔

شرائط:

اس ٹیوٹوریل میں دکھائے گئے اقدامات کو انجام دینے کے لیے، آپ کو درج ذیل اجزاء کی ضرورت ہے:

  • ایک مناسب طریقے سے تشکیل شدہ لینکس سسٹم۔ اس کو دیکھو ورچوئل باکس میں اوبنٹو وی ایم کو کیسے ترتیب دیا جائے۔ .
  • کمانڈ لائن انٹرفیس سے بنیادی واقفیت۔

باش کی تاریخ

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







Bash ان تمام کمانڈز کو ٹریک کرتا ہے جو پہلے ٹرمینل سے چلائے گئے تھے۔ ڈیبگنگ جیسے متعدد حالات میں یہ ناقابل یقین حد تک مفید ہو سکتا ہے۔ یہ ایک جیسے/مماثل کمانڈز کو بار بار ٹائپ کرنے کی ضرورت کو بھی کم کر سکتا ہے۔



ہسٹری مینجمنٹ کے لیے، Bash دو بلٹ ان کمانڈز کے ساتھ آتا ہے:



$ قسم تاریخ





$ قسم fc

تاریخ کو ذخیرہ کرنے کے لیے، Bash دو مختلف تکنیکوں کا استعمال کرتا ہے:



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

ڈیفالٹ ہسٹری فائل جو Bash استعمال کرتی ہے اس پر واقع ہے:

$ کیٹ ~ / .bash_history

یہاں مٹھی بھر ماحولیاتی متغیرات اور کی بورڈ شارٹ کٹس بھی ہیں جو بدلتے ہیں کہ Bash تاریخ کو کیسے ہینڈل کرتا ہے۔

باش ہسٹری کے ساتھ کام کرنا

بنیادی استعمال

حال ہی میں چلنے والے کمانڈز کی فہرست حاصل کرنے کے لیے، درج ذیل کمانڈ کا استعمال کریں:

$ تاریخ

یہاں، وہ تمام کمانڈز درج ہیں جو بفر میں محفوظ ہیں۔ ہر کمانڈ نے عددی قدر تفویض کی ہے۔ سب سے قدیم کمانڈ 1 کے ساتھ تفویض کی گئی ہے۔

ہم درج ذیل کمانڈ کا استعمال کرتے ہوئے پرنٹ کرنے کے لیے کمانڈز کی تعداد کو محدود کر سکتے ہیں۔

$ تاریخ ن

یہاں، N ایک عدد عدد ہے جہاں N >= 0۔ آؤٹ پٹ ہسٹری سے آخری N کمانڈز پر مشتمل ہے۔

ہم فلٹرنگ کے لیے grep کے ساتھ مل کر آؤٹ پٹ بھی استعمال کر سکتے ہیں:

$ تاریخ | گرفت < تار >

ایک طویل تاریخ کو براؤز کرنے کے لیے، ہم 'کم' کمانڈ استعمال کر سکتے ہیں:

$ تاریخ | کم

تاریخ سے کمانڈز کو حذف کرنا

اگر آپ کو تاریخ سے مخصوص کمانڈ کو ہٹانے کی ضرورت ہے، تو درج ذیل کمانڈز استعمال کریں:

$ تاریخ

$ تاریخ -d < کمانڈ_نمبر >

$ تاریخ

اسی طرح، تاریخ سے M سے N تک کمانڈز کو ہٹانے کے لیے، ہم درج ذیل کمانڈز استعمال کر سکتے ہیں۔

$ تاریخ

$ تاریخ -d ایم این

$ تاریخ

موجودہ ٹرمینل سیشن کے لیے رام بفر سے تاریخ کو صاف کرنے کے لیے، اس کے بجائے درج ذیل کمانڈز استعمال کریں:

$ تاریخ -c

$ تاریخ

ڈسک پر محفوظ ہسٹری فائل سے ہسٹری کو صاف کرنے کے لیے، ہم اسے مکمل طور پر NULL سے اوور رائٹ کر سکتے ہیں:

$ کیٹ / دیو / خالی > $HISTFILE

Bash کی تاریخ کی ترتیبات

باش تاریخ کو کس طرح ہینڈل کرتا ہے اس کو ٹویک کرنے کے متعدد طریقے ہیں۔ ان میں سے بہت سے اختیارات کا انتظام ماحولیاتی متغیرات کے ذریعے کیا جاتا ہے۔

ان کی قدر کو تبدیل کرنے کے لیے، ہم 'bashrc' فائل میں ترمیم کرتے ہیں:

$ نینو ~ / .bashrc

ترمیم کرنے کے بعد، فائل کو محفوظ کریں اور اسے Bash میں دوبارہ لوڈ کریں۔

$ ذریعہ ~ / .bashrc

نظام بھر میں تبدیلیاں کرنے کے لیے، 'bashrc' میں ترمیم کریں جو درج ذیل مقامات پر واقع ہے:

$ نینو / وغیرہ / bash.bashrc

$ نینو / وغیرہ / bashrc

بفر کا سائز

جیسا کہ پہلے ذکر کیا گیا ہے، Bash کمانڈ ہسٹری کو RAM (موجودہ سیشن کے لیے) اور ڈسک فائل میں (پچھلے تمام سیشنز کے لیے) ذخیرہ کرنے کے لیے دو بفرز کا استعمال کرتا ہے۔

ان بفروں کے سائز کو دو ماحولیاتی متغیرات کے ذریعے کنٹرول کیا جاتا ہے:

  • HISTSIZE : یہ RAM بفر میں ذخیرہ کرنے کے لیے اندراجات کی تعداد کی وضاحت کرتا ہے۔
  • HISTFILESIZE : یہ ڈسک فائل میں ذخیرہ کرنے کے لیے اندراجات کی تعداد کی وضاحت کرتا ہے۔

ہم اپنی ضروریات کو پورا کرنے کے لیے 'bashrc' میں ان کی قدر کو تبدیل کر سکتے ہیں:

$ نینو ~ / .bashrc

مثال کے طور پر، دونوں بفرز میں 5000 اندراجات کو ذخیرہ کرنے کے لیے، 'bashrc' کو درج ذیل کوڈ کے ساتھ اپ ڈیٹ کریں:

$ HISTSIZE = 5000

$ HISTFILESIZE = 5000

حکم اخراج

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

  • ہسٹکنٹرول

آئیے درج ذیل کمانڈ کی مثال کے ساتھ شروع کریں:

$ بازگشت 'راہب' && تاریخ 5

$ بازگشت 'بونک' && تاریخ 5

جیسا کہ ہسٹری کمانڈ کا آؤٹ پٹ ظاہر کرتا ہے، صرف پہلی ایکو کمانڈ رجسٹرڈ ہے لیکن دوسری نہیں۔

یہ HISTIGNORE ماحولیاتی متغیر کا کام ہے۔ یہ Bash سے کہتا ہے کہ کچھ نمونوں کی بنیاد پر ہسٹری بفر میں کمانڈز کو لاگ ان نہ کریں۔ درج ذیل اقدار دستیاب ہیں:

  • نظر انداز : اگر کوئی کمانڈ پچھلی تاریخ کے اندراج سے میل کھاتا ہے تو یہ لاگ ان نہیں ہوتا ہے۔
  • نظر انداز کرنے کی جگہ : اگر کوئی کمانڈ شروع میں اسپیس سے شروع ہوتی ہے تو یہ لاگ ان نہیں ہوگا۔
  • دونوں کو نظر انداز کریں : یہ ignoredups اور ignorespace دونوں کے اصول کا اطلاق کرتا ہے۔
  • مٹا دیا : تمام پچھلی لائنیں جو موجودہ کمانڈ سے ملتی ہیں تاریخ سے مٹا دی جائیں گی۔

پہلی مثال میں، ہم نے نظر انداز کرنے کی جگہ کے استعمال کا مظاہرہ کیا۔ تاہم، تمام ڈسٹرو اس کنفیگریشن کے ساتھ Bash کو نہیں بھیج سکتے ہیں۔ ہمیشہ کی طرح، ہم انہیں 'bashrc' میں شامل کر سکتے ہیں:

$ ہسٹکنٹرول = دونوں کو نظر انداز کریں۔

درج ذیل کمانڈ کا استعمال کرتے ہوئے متعدد اختیارات کو فعال کرنا بھی ممکن ہے۔

$ ہسٹکنٹرول = ignoredups: ignorespace

یہاں، ignoredups:ignorespace ignoreboth کے برابر ہے۔

  • ہسٹیگنور

یہ ماحولیاتی متغیر ایک یا زیادہ پیٹرن پر مشتمل ہوسکتا ہے۔ کوئی بھی کمانڈ جو کسی بھی پیٹرن سے میل کھاتا ہے جو HISTIGNORE کے ذریعہ بیان کیا گیا ہے وہ کسی بھی تاریخ کے بفر میں رجسٹر نہیں کیا جائے گا۔ پیٹرن کی وضاحت ریگولر ایکسپریشنز کا استعمال کرتے ہوئے کی جاتی ہے۔

ساخت مندرجہ ذیل ہے:

$ ہسٹیگنور = '' : '' : ''

مثال کے طور پر، باش ہسٹری سے ہسٹری اور ایکو کمانڈز کو خارج کرنے کے لیے، HISTIGNORE کو اس طرح اپ ڈیٹ کریں:

$ ہسٹیگنور = 'تاریخ' : 'گونج*'

ہم اسے جانچنے کے لیے درج ذیل سلسلہ وار کمانڈ استعمال کر سکتے ہیں۔

$ ls -l / تھا / لاب &> / دیو / خالی

$ تاریخ

$ بازگشت ہیلو دنیا

$ تاریخ

ٹائم سٹیمپنگ

Bash کو اس وقت لاگ ان کرنے کے لیے بھی کنفیگر کیا جا سکتا ہے جب کمانڈ چلائی گئی تھی۔ یہ مختلف حالات میں کارآمد ہو سکتا ہے جیسے ڈیبگنگ۔

باش کی تاریخ میں ٹائم اسٹیمپ کو فعال کرنے کے لیے، HISTTIMEFORMAT کی قدر کو اپ ڈیٹ کریں:

$ ہسٹ ٹائم فارمیٹ = ''

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

$ آدمی تاریخ

درج ذیل فہرست میں کچھ آسان شامل ہیں:

  • T: وقت
  • %d: دن
  • %m: مہینہ
  • %y:سال
$ ہسٹ ٹائم فارمیٹ = '%T %d:'

تاریخ استقامت

CLI کے ساتھ کام کرتے وقت، بہت سے معاملات میں، آپ خود کو متعدد ٹرمینلز کے ساتھ کام کرتے ہوئے پائیں گے۔ یہ وہ جگہ ہے جہاں باش کی تاریخ کا انتظام درد کا باعث بن سکتا ہے۔

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

ایسا کرنے کے لیے، PROMPT_COMMAND کی قدر کو اپ ڈیٹ کریں:

$ PROMPT_COMMAND = 'تاریخ ایک'

یہاں، PROMPT_COMMAND متغیر درست کمانڈز پر مشتمل ہو سکتا ہے۔ PROMPT_COMMAND کے مشمولات اس سے پہلے چلائے جاتے ہیں کہ Bash صارف کا ان پٹ لینا شروع کرے۔ 'ہسٹری -a' کمانڈ ہسٹری کو ہسٹری فائل میں مواد کو شامل کرنے پر مجبور کرتی ہے۔

تاریخ کی توسیع اور نامزد کنندگان

Bash اپنی تاریخ کی خصوصیت سے فائدہ اٹھانے کے لیے کچھ بلٹ ان شارٹ کٹس کے ساتھ آتا ہے۔ نامزد کرنے والوں کی فہرست یہ ہے:

  • !! : تاریخ سے آخری کمانڈ چلاتا ہے۔
  • این : تاریخ سے Nth کمانڈ چلاتا ہے۔
  • !-این : تاریخ کی تازہ ترین کمانڈ سے پہلے Nth کمانڈ چلاتا ہے۔
  • ! : تازہ ترین کمانڈ چلاتا ہے۔

مندرجہ ذیل حکموں کا سلسلہ ان کے استعمال کو ظاہر کرتا ہے:

$ بازگشت 1

$ بازگشت 2

$ بازگشت 3

$ تاریخ

$ ! بازگشت

$ ! - 3

$ ! 1

$ !!

کچھ نامزد کنندگان تاریخ کے کمانڈ دلائل کے ساتھ بھی کام کرتے ہیں:

  • !:* : حالیہ کمانڈ کے تمام دلائل استعمال کریں۔
  • !:^ : حالیہ کمانڈ کی پہلی دلیل استعمال کریں۔
  • !: این : تازہ ترین کمانڈ کی Nth دلیل استعمال کریں۔
  • !:M-N : تازہ ترین کمانڈ کے M سے N تک دلائل استعمال کریں۔
  • !:$ : حالیہ کمانڈ کی آخری دلیل استعمال کریں۔

مندرجہ ذیل حکموں کا سلسلہ ان کے استعمال کو ظاہر کرتا ہے:

$ بازگشت 1 2 3 4 5 6 7

$ بازگشت ! : *

$ بازگشت 1 2 3 4 5 6 7

$ بازگشت ! :^

$ بازگشت 1 2 3 4 5 6 7

$ بازگشت ! : 5

$ بازگشت 1 2 3 4 5 6 7

$ بازگشت ! : 1 - 5

$ بازگشت 1 2 3 4 5 6 7

$ بازگشت ! :$

اگر آپ کو کسی مختلف کمانڈ کے پیرامیٹرز کے ساتھ کام کرنے کی ضرورت ہے تو، نامزد کرنے والے اس طرح نظر آتے ہیں:

  • !^ : کمانڈ کی پہلی دلیل استعمال کرتا ہے۔
  • !$ : کمانڈ کی آخری دلیل استعمال کرتا ہے۔

مندرجہ ذیل کمانڈ چین ان کے استعمال کو ظاہر کرتا ہے:

$ ls -lh / تھا / لاگ &> / دیو / خالی

$ چھو 1 .TXT 2 .TXT 3 .TXT 4 .TXT 5 .TXT

$ بازگشت ! چھو ^

$ بازگشت ! چھو $

ہسٹری کی بورڈ شارٹ کٹس

تمام کمانڈز اور ماحولیاتی متغیرات کے علاوہ، Bash آسان ہسٹری نیویگیشن کے لیے مٹھی بھر کی بورڈ شارٹ کٹس کو بھی سپورٹ کرتا ہے:

  • اوپر تیر والی کلید: پیچھے کی طرف اسکرول کریں۔
  • نیچے تیر والی کلید: آگے اسکرول کریں۔

کی بورڈ شارٹ کٹس بھی ہیں جو انٹرایکٹو ہسٹری تلاش کے لیے دستیاب ہیں:

  • Ctrl + R : تاریخ میں کمانڈز تلاش کریں۔
  • Ctrl + O : منتخب کمانڈ کو چلائیں۔
  • Ctrl + G : انٹرایکٹو تلاش سے باہر نکلیں۔

نتیجہ

ہم نے باش کی تاریخ کے بارے میں تفصیل سے بات کی۔ ہم نے سیکھا کہ Bash کمانڈ ہسٹری کو کیسے اسٹور کرتا ہے اور اس سے مختلف طریقوں سے فائدہ کیسے اٹھانا ہے۔ ہم نے مختلف مثالوں کا استعمال کرتے ہوئے باش کی تاریخ کے ساتھ کام کرنے کا طریقہ دکھایا۔

Bash کے بارے میں مزید جاننے میں دلچسپی ہے؟ دی باش پروگرامنگ ذیلی زمرہ Bash کی مختلف خصوصیات پر سینکڑوں گائیڈز پر مشتمل ہے۔

مبارک کمپیوٹنگ!