stdout اور stderr کو فائل میں ری ڈائریکٹ کریں۔

Redirect Stdout Stderr File



جب آپ کسی بھی کمانڈ آؤٹ پٹ کو کسی فائل میں ری ڈائریکٹ کرتے ہیں تو آپ دیکھیں گے کہ غلطی کے پیغامات ٹرمینل ونڈو پر پرنٹ ہوتے ہیں۔ کسی بھی لینکس شیل میں پائی جانے والی کمانڈ ، جیسے bash ، تین باقاعدہ I/O اسٹریمز استعمال کرتی ہے۔ ایک عددی فائل ڈسریکٹر ہر اسٹریم کی نمائندگی کے لیے استعمال ہوتا ہے۔

  • معیاری ان پٹ سٹریم (stdin): 0۔
  • معیاری آؤٹ پٹ سٹریم (stdout): 1۔
  • معیاری خرابی کا سلسلہ (stderr): 2۔

اس پوسٹ میں ، ہم اس معلومات کو سمجھیں گے جو stdout اور stderr کو فائل میں ری ڈائریکٹ کرنے کے تحت آتی ہے۔







معیاری پیداوار۔ (stdout):

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



معیاری خرابی (stderr):

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



stdout اور stderr کو ایک فائل میں ری ڈائریکٹ کرنا:

جیسا کہ ری ڈائریکشن ایک پروگرام آؤٹ پٹ پر قبضہ کرنے اور اسے دوسرے کمانڈ یا فائل میں بطور ان پٹ بھیجنے کا ایک طریقہ ہے۔ I/O اسٹریمز کو n> آپریٹر کو استعمال میں لا کر ری ڈائریکٹ کیا جا سکتا ہے ، جہاں n فائل ڈسریکٹر نمبر ہے۔ stdout کو ری ڈائریکٹ کرنے کے لیے ، ہم استعمال کرتے ہیں 1> اور stderr کے لیے ، 2> ایک آپریٹر کے طور پر شامل کیا جاتا ہے۔





ہم نے اپنی موجودہ ڈائریکٹری میں ری ڈائریکٹ آؤٹ پٹ کو سٹور کرنے کے لیے sample.txt نامی فائل بنائی ہے۔



(کمانڈ> فائل) کو کلاسک ری ڈائریکٹ آپریٹر سمجھا جاتا ہے جو ٹرمینل میں دکھائی گئی معیاری خرابی کے ساتھ معیاری آؤٹ پٹ کو ہی ری ڈائریکٹ کرتا ہے۔ ہم stderr کو بھی ری ڈائریکٹ کرنے کے لیے مختلف آپشنز کا مظاہرہ کریں گے۔

فائلوں کو الگ کرنے کے لیے stderr اور stdout کو ری ڈائریکٹ کرنا:

فائلوں کو الگ کرنے کے لیے stdout اور stderr کو ری ڈائریکٹ کرنے کے لیے کمانڈ نحو ذیل ہے۔

کمانڈ >باہر>خرابی

نیچے دی گئی کمانڈ آؤٹ پٹ کو آؤٹ فائل اور غلطی کے پیغامات کو ایرر فائل میں ری ڈائریکٹ کرے گی۔

$کیٹsample.txt>باہر>خرابی

stderr کو stdout پر ری ڈائریکٹ کرنا:

ہر چیز کو ایک فائل میں محفوظ کرنے کے لیے کسی پروگرام کی معیاری پیداوار کے ساتھ سٹڈرر کو ری ڈائریکٹ کرنا ایک عام بات ہے۔ stderr کو stdout پر ری ڈائریکٹ کرنے کے لیے کمانڈ نحو یہ ہے:

کمانڈ >باہر> &$ایل ایس >samplefile.txt> &

$کیٹsamplefile.txt

> آؤٹ ری ڈائریکٹس stdout کو samplefile.txt پر ری ڈائریکٹ کریں ، اور 2> اور 1 stderr کو stdout کے موجودہ مقام پر ری ڈائریکٹ کرے گا۔

اگر stderr کو پہلے stdout پر ری ڈائریکٹ کیا جاتا ہے تو ، stdout کو فائل میں ری ڈائریکٹ کرنے کے لیے نیچے دی گئی کمانڈ استعمال کریں۔

کمانڈ > & > فائل$ایل ایس -کرنے کے لئے > & >samplefile.txt

$کیٹsamplefile.txt

&> اسی فعالیت کے لیے بھی استعمال ہوتا ہے جو 2> اور 1 انجام دیتا ہے۔

کمانڈ &>۔ فائل$ایل ایس &>۔samplefile.txt

$کیٹsamplefile.txt

stdout اور stderr کو ایک فائل میں ری ڈائریکٹ کرنا:

تمام گولے اس فارم ری ڈائریکشن کو سپورٹ نہیں کرتے ، لیکن bash اور Zsh اس کی حمایت کرتے ہیں۔ Stdout اور stderr کو مندرجہ ذیل نحو کو استعمال کر کے ری ڈائریکٹ کیا جا سکتا ہے۔

کمانڈ &>۔باہر$کیٹsample.txt&>۔باہر

آرٹیکل کے آئندہ حصے میں ، ہم stdout اور stderr redirection کے لیے الگ الگ مثال دیکھیں گے۔

stdout کو کسی فائل میں ری ڈائریکٹ کرنا:

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

کمانڈ > فائل

ہم ls -al کمانڈ کے معیاری آؤٹ پٹ کو محفوظ کرنے کے لیے sample.file استعمال کر رہے ہیں۔

$ایل ایس -کرنے کے لئے >sample.txt

$کیٹsample.txt

کمانڈ > فائل$ایل ایس >sample.txt

$کیٹsample.txt

stderr کو کسی فائل میں ری ڈائریکٹ کرنا:

stderr کو فائل میں ری ڈائریکٹ کرنے کے لیے 2> آپریٹر استعمال کریں۔

کمانڈ > فائل $ایل ایس -کرنے کے لئے >sample.txt

ہم ایک ہی ری ڈائریکٹ کمانڈ میں stderr اور stdout کے لیے پھانسی کو یکجا کر سکتے ہیں۔

کمانڈ >error.txt>output.txt

نیچے دی گئی مثال میں ، غلطی کے پیغامات error.txt میں محفوظ کیے جائیں گے ، جہاں output.txt اس کی معیاری آؤٹ پٹ ls کمانڈ ہوگی۔

$ایل ایس >error.txt>output.txt

$کیٹoutput.txt

نتیجہ:

لینکس ٹرمینل میں کام کرتے ہوئے I/O اسٹریمز کے لیے ری ڈائریکشن اور فائل ڈسریکٹر کا تصور بہت قیمتی ہے۔ اس پوسٹ میں ، ہم نے باقاعدہ I/O اسٹریمز کے بارے میں بات کی ہے ، بشمول stdout اور stderr۔ اس پوسٹ کا پہلا سیکشن آپ کو ری ڈائریکشن ، I/O اسٹریمز ، اور عددی فائل ڈسریکٹر کے بارے میں تفصیلی معلومات فراہم کرتا ہے۔ اگلا ، آپ نے stdout اور stderr redirection کی مختلف شکلوں کی عملی مثال دیکھی ہے۔