کس طرح ایک لینکس بیش اسکرپٹ میں لائن کی طرف سے ایک فائل میں لائن پر عملدرآمد کرنے

Feb 3, 2025
لینکس
Fatmawati Achmad Zaenuri / Shutterstock.

ایک شیل سکرپٹ میں لائن کی طرف سے ایک لینکس ٹیکسٹ فائل لائن کے مواد کو پڑھنے کے لئے بہت آسان ہے- جب تک کہ آپ کچھ ٹھیک ٹھیک چٹانوں سے نمٹنے کے لئے. یہاں یہ کیسے محفوظ طریقے سے کام کرنا ہے.

فائلوں، متن، اور idioms.

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

فائلوں سے ڈیٹا پڑھنے کی طرح کام، loops کے ساتھ کام کرتے ہیں، اور دو متغیرات کے اقدار کو تبدیل کرنے کے اچھے مثالیں ہیں. پروگرامر ایک عام یا وینیلا فیشن میں ان کے سروں کو حاصل کرنے کے لئے کم سے کم ایک طریقہ کو جان لیں گے. شاید یہ ہاتھ میں ضرورت کے لئے کافی ہے. یا شاید وہ کوڈ کو بے نقاب کریں گے کہ وہ مزید موثر یا مخصوص حل پر لاگو کریں جو وہ ترقی پذیر ہیں. لیکن ان کی انگلیوں پر عمارت کے بلاک کی حیثیت سے ایک عظیم نقطہ نظر ہے.

ایک زبان میں محاذوں کو جاننے اور سمجھنے کے لئے یہ بھی ایک نئی پروگرامنگ زبان لینے کے لئے آسان بناتا ہے. جانتا ہے کہ کس طرح چیزیں ایک زبان میں تعمیر کی جاتی ہیں اور اس کے برابر یا قریبی چیز کی تلاش کی جاتی ہے- دوسری زبان میں آپ کو پہلے سے ہی معلوم ہے اور پروگرامنگ زبانوں کے درمیان اختلافات کی تعریف کرنے کا ایک اچھا طریقہ ہے.

ایک فائل سے لائنز پڑھنا: ایک لائنر

بش میں، آپ استعمال کر سکتے ہیں جبکہ ایک فائل سے متن کی ہر سطر کو پڑھنے کے لئے کمانڈ لائن پر لوپ اور اس کے ساتھ کچھ کرو. ہماری ٹیکسٹ فائل "ڈیٹا. txt" کہا جاتا ہے. یہ سال کے مہینے کی ایک فہرست رکھتا ہے.

 جنوری
فروری
مارچ
.
.
اکتوبر
نومبر
دسمبر 

ہمارے سادہ ایک لائنر یہ ہے:

 لائن پڑھنے کے دوران؛ $ لائن گونگا کرو کیا اور ایل ٹی؛ ڈیٹا. txt 

The. جبکہ لوپ فائل سے ایک لائن پڑھتا ہے، اور چھوٹا سا پروگرام کے عملدرآمد کے بہاؤ لوپ کے جسم میں گزرتا ہے. The. گونج کمانڈ ٹرمینل ونڈو میں متن کی لائن لکھتا ہے. پڑھنے کی کوشش ناکام ہوجاتی ہے جب پڑھنے کے لئے کوئی اور لائنیں نہیں ہیں، اور لوپ کیا جاتا ہے.

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

یقینا، یہ ایک لائنر بہت مفید نہیں ہے. لینکس پہلے ہی فراہم کرتا ہے کیٹ کمانڈ، جو ہمارے لئے بالکل وہی ہے. ہم نے تین حروف کمانڈ کو تبدیل کرنے کے لئے ایک طویل ہوا راستہ بنایا ہے. لیکن یہ ایک فائل سے پڑھنے کے اصولوں کو واضح طور پر ظاہر کرتا ہے.

یہ ایک نقطہ نظر، کافی کام کرتا ہے. فرض کریں کہ ہمارے پاس ایک اور ٹیکسٹ فائل ہے جس میں مہینے کے نام شامل ہیں. اس فائل میں، نئے لائن کے کردار کے لئے فرار ترتیب ہر لائن میں شامل کیا گیا ہے. ہم اسے "ڈیٹا 2.txt" کہتے ہیں.

 جنوری \ این
فروری \ این
مارچ \ این
.
.
اکتوبر \ این
نومبر \ این
دسمبر \ ن 

چلو ہماری نئی فائل پر ہمارے ایک لائنر کا استعمال کرتے ہیں.

 لائن پڑھنے کے دوران؛ $ لائن گونگا کرو کیا اور ایل ٹی؛ Data2.txt 

Backslash فرار کردار " \ "رد کر دیا گیا ہے. نتیجہ یہ ہے کہ ایک "این" ہر لائن میں شامل کیا گیا ہے. بش ایک کے آغاز کے طور پر backslash کی تشریح کر رہا ہے فرار ہونے سے فرار . اکثر، ہم بش نہیں چاہتے ہیں کہ یہ کیا پڑھ رہا ہے. اس کی مکمل طور پر بیک اپ کے سلسلے میں ایک لائن کو پڑھنے کے لئے یہ زیادہ آسان ہوسکتا ہے اور سبھی اور اپنے آپ کو اپنے کوڈ کے اندر اندر، اپنے آپ کو کس طرح نکالنے یا اپنے آپ کو تبدیل کرنے کا انتخاب کریں.

اگر ہم کسی بھی معقول پروسیسنگ یا متن کی لائنوں پر منحصر کرنا چاہتے ہیں، تو ہمیں ایک سکرپٹ استعمال کرنے کی ضرورت ہوگی.

ایک سکرپٹ کے ساتھ ایک فائل سے لائنیں پڑھنا

یہاں ہماری سکرپٹ ہے. اسے "script1.sh" کہا جاتا ہے.

    #! / بن / بش  
 
  انسداد =  0 
 
               linefromfile  [116 ] ||  [ [  [        ] ]؛   کیا  
 
  ((9] [9 9] انسداد   ++    
    "لائن تک رسائی   $ انسداد     $ {98]   ] 
 
  کیا   اور ایل ٹی؛          

ہم نامی ایک متغیر مقرر انسداد صفر پر، اس کے بعد ہم اپنے وضاحت جبکہ لوپ.

جبکہ لائن پر پہلے بیان ہے IFS = '' . IFS اندرونی میدان جداکار کے لئے کھڑا ہے. یہ اقدار کی ڈگری حاصل کی بیش لفظ حدود کی شناخت کے لئے استعمال کرتا ہے. بنیادی طور پر، پڑھنے کی کمانڈ کی قیادت اور سفید فاصلہ پشت بندی بند سٹرپس. ہم فائل وہ ہیں بالکل طور سے لائنوں کو پڑھنے کے لئے چاہتے ہیں تو، ہم مقرر کرنے کی ضرورت IFS ایک خالی سٹرنگ ہو.

ہم لوپ کے اس سے ایک بار باہر قائم کر سکتے ہیں ہم میں سے قیمت مقرر کر رہے ہیں جیسا انسداد . لیکن زیادہ پیچیدہ سکرپٹ، خاص طور پر میں بہت سے صارف کی وضاحت افعال کے ساتھ ان لوگوں کے ساتھ ان کا ہے-یہ ہے کہ ممکن ہے IFS کسی اور جگہ رسم الخط میں مختلف اقدار کے لئے مقرر کیا جا سکتا ہے. اس بات کا یقین ہے کہ IFS ایک خالی سٹرنگ کرنے کے لئے ہر وقت مقرر کیا گیا ہے جبکہ لوپ ضمانت iterates ہے ہم جانتے ہیں کہ اس کے رویے میں کیا جائے گا.

ہم نامی ایک متغیر میں متن کی ایک سطر پڑھنے کے لئے جا رہے ہیں LinefromFile . ہم استعمال کر رہے ہیں -r backslashes کی نظر انداز کرنے کا اختیار (ایک عام کردار کے طور پر الٹا سلیش پڑھیں). وہ صرف کسی دوسرے کردار کی طرح سلوک کیا جائے گا اور کوئی خاص علاج نہیں ملے گا.

مطمئن کرے گا کہ دو شرطیں ہیں جبکہ لوپ اور متن لوپ کے جسم کی طرف سے عملدرآمد کرنے کی اجازت:

  • -r LinefromFile پڑھ : متن کی ایک سطر کو کامیابی فائل سے پڑھ رہا ہو تب پڑھیں کمانڈ کرنے کے لئے ایک کامیابی سگنل بھیجتا ہے جبکہ ، اور جبکہ لوپ لوپ کے جسم کو پھانسی بہاؤ گزر جاتا ہے. یاد رکھیں کہ پڑھیں کمانڈ ایک کو دیکھنے کے لئے کی ضرورت ہے newline کردار ترتیب میں متن کی لائن کے آخر میں یہ ایک کامیاب پڑھیں غور کرنے کے لئے. فائل ایک نہیں ہے تو POSIX مطابق ٹیکسٹ فائل، آخری سطر ایک newline کردار شامل نہیں کرسکتے . اگر پڑھیں کمانڈ دیکھتا فائل مارکر کے اختتام (مسل اختتام) لائن سے پہلے ایک newline کی طرف سے ختم کیا جاتا ہے، یہ ہو گا نہیں ایک کامیاب پڑھا کے طور پر اس کا علاج. اگر ایسا ہوتا ہے، متن کی آخری سطر لوپ کے جسم کو منظور نہیں کیا جائے گا اور وہ کاروائی نہیں کی جائے گی.
  • [-n "$ {LinefromFile}"] : ہم غیر POSIX آہنگ فائلوں کو ہینڈل کرنے کے لئے کچھ اضافی کام کو کرنے کی ضرورت. یہ موازنہ چیکس ٹیکسٹ کہ فائل سے پڑھا جاتا ہے. یہ ایک newline کردار کے ساتھ ختم نہیں کیا جاتا ہے تو، اس کے مقابلے میں اب بھی کرنے کے لئے کامیابی واپس آ جائیں گے جبکہ لوپ. یہ اس بات کا یقین کسی بھی پشت بندی لائن کو ٹکڑے لوپ کے جسم کی طرف سے عملدرآمد کر رہے ہیں.

یہ دو شقوں یا منطقی آپریٹر "کی طرف سے الگ کر رہے ہیں || "تاکہ اگر یا تو شق ریٹرن کامیابی حاصل شدہ متن، لوپ کے جسم کی طرف سے عملدرآمد ایک newline کردار ہے یا نہیں کیا جاتا ہے.

ہمارے لوپ کے جسم میں، ہم incrementing رہے ہیں انسداد ایک اور استعمال کرتے ہوئے کی طرف سے متغیر گونج ٹرمنل ونڈو پر کچھ پیداوار بھیجنے کے لئے. لائن نمبر اور ہر سطر کا متن دکھائے جاتے ہیں.

ہم اب بھی ایک لوپ میں ایک فائل کو ری ڈائریکٹ کرنے کے لئے ہماری نئ سمت چال استعمال کر سکتے ہیں. اس صورت میں، ہم $ 1 پہلی کمانڈ لائن پیرامیٹر سکرپٹ کو منظور ہے کہ کے نام کی ڈگری حاصل کی ہے کہ ایک متغیر منتقل کیا جا رہا رہے. یہ چال استعمال کرتے ہوئے، ہم آسانی سے ہم اسکرپٹ پر کام کرنا چاہتے ہیں کہ ڈیٹا فائل کے نام پر منتقل کر سکتے ہیں.

کاپی اور ایک ایڈیٹر میں اسکرپٹ پیسٹ کریں اور فائل نام کے ساتھ اسے بچانے "script1.sh." کا استعمال کرتے ہیں CHMOD کمانڈ یہ کارکردگی قابل بنانے کے لئے .

 CHMOD + X script1.sh 

چلو ہمارے اسکرپٹ data2.txt ٹیکسٹ فائل کا ہوتا ہے اور backslashes کی اس کے اندر موجود ہے دیکھتے ہیں.

 ./ script1.sh data2.txt 

سطر میں ہر کردار لفظ بہ لفظ دکھایا جاتا ہے. backslashes کی فرار حروف کے طور پر تشریح نہیں ہیں. وہ باقاعدگی سے حروف کے طور پر طباعت کر رہے ہیں.

ایک تقریب میں لائن پاسنگ

ہم اب صرف سکرین پر متن گونج رہے ہیں. ایک حقیقی دنیا پروگرامنگ منظر نامے میں، ہم امکان متن کی لائن کے ساتھ زیادہ دلچسپ کچھ کرنے کے بارے میں ہو جائے گا. زیادہ تر مقدمات میں، یہ ایک اور تقریب میں لائن کی مزید کارروائی ہینڈل کرنے میں ایک اچھا پروگرامنگ کی پریکٹس ہے.

یہاں ہم یہ کر سکتے ہیں کس طرح ہے. یہ "script2.sh" ہے.

ہم وضاحت ہمارے انسداد پہلے کی طرح متغیر ہے، اور پھر ہم نامی تقریب کی وضاحت process_line () . ایک تقریب کی تعریف ظاہر ہونا چاہیے پہلے تقریب پہلی رسم الخط میں کہا جاتا ہے.

ہمارے تقریب کے ہر iteration میں متن کے نو پڑھیں لکیر منظور کیا جا رہا ہے جبکہ لوپ. ہم استعمال کر کے تقریب کے اندر اندر اس قدر رسائی حاصل کرسکتے ہیں $ 1 متغیر. تقریب میں منظور دو متغیر وہاں تھے تو، ہم استعمال کر ان اقدار تک رسائی حاصل کر سکتا ہے $ 1 اور $ 2 ، اور زیادہ متغیر کے لئے پر ہیں.

ڈبلیو سے Hile لوپ بنیادی طور پر ایک ہی ہے. لوپ کے جسم کے اندر صرف ایک تبدیلی ہے. The. گونج لائن پر ایک کال کی طرف سے تبدیل کر دیا گیا ہے process_line () تقریب. نوٹ اگر آپ تقریب آپ کو یہ مطالبہ کر رہے ہیں جب کے نام پر "()" بریکٹ استعمال کرنے کی ضرورت نہیں ہے.

متن کی لائن انعقاد متغیر کے نام، LinefromFile واوین میں لپٹی یہ تقریب سے گزر رہا ہے جب کی جاتی ہے. یہ ان میں خالی جگہ ہے کہ لائنز سے پورا کرتا ہے. واوین کے بغیر، سب سے پہلے لفظ کے طور پر علاج کیا جاتا ہے $ 1 تقریب کی طرف سے، دوسرے لفظ سمجھا جاتا ہے $ 2 ، اور اسی طرح. واوین بات کا یقین استعمال کرتے ہوئے ہے کہ اس کو مکمل طور پر، متن کی پوری لائن سنبھالا ہے، $ 1 . یہ وہ جگہ ہے یاد رکھیں کہ نہیں ایسا ہی $ 1 کہ سکرپٹ کے لئے منظور کیا ایک ہی ڈیٹا فائل ڈگری حاصل کی.

کیونکہ انسداد اسکرپٹ کے اہم جسم میں اعلان کیا گیا ہے اور ایک تقریب کے اندر، اس کے اندر محولہ جا سکتا ہے نہیں process_line () تقریب.

کاپی یا ایک ایڈیٹر میں مندرجہ بالا سکرپٹ ٹائپ کریں اور فائل نام کے ساتھ اسے بچانے "script2.sh." اس کے ساتھ کارکردگی قابل بنائیں CHMOD انکار

 CHMOD + X script2.sh 

اب ہم اس کو چلانے اور ایک نیا ڈیٹا فائل میں منتقل، کر سکتے ہیں "data3.txt." یہ اس میں مہینوں کی ایک فہرست ہے، اور اس پر بہت سے الفاظ کے ساتھ ایک لائن ہے.

 جنوری
فروری
مارچ
.
.
اکتوبر
نومبر \ nMore متن "لائن کے آخر میں"
دسمبر 

ہمارا حکم ہے:

 ./ script2.sh data3.txt 

لائنز فائل سے پڑھنے اور کرنے ایک ایک کر کے گزر جاتے ہیں process_line () تقریب. تمام لائنیں بیک اسپیس کے ساتھ عجیب سے ایک، واوین، اور اس میں ایک سے زیادہ الفاظ بھی شامل ہیں، درست طریقے سے دکھائے جاتے ہیں.

بلڈنگ بلاکس مفید ہیں

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


لینکس - انتہائی مشہور مضامین

تلاش کریں اور لینکس پر ٹوٹ symlinks کو حذف کرنے کا طریقہ

لینکس Nov 12, 2024

Fatmawati سے Achmad Zaenuri / Shutterstock کی لینکس پر علامتی لنکس ایک تصوراتی، بہترین خصوصیت ہیں، لیکن �..


کاک پٹ ویب انٹرفیس کے ساتھ لینکس سرورز کا انتظام کرنے کا طریقہ

لینکس Dec 9, 2024

Fatmawati سے Achmad Zaenuri / Shutterstock کی آپ آسانی سے نگرانی کرنے اور کاک پٹ، ایک براؤزر کی بنیاد پر ان..


کو محدود کرنے کے استعمال کو محدود شیل کے لئے کس طرح کیا ایک لینکس صارف کر سکتے ہیں

لینکس Mar 25, 2025

Fatmawati Achmad Zaenuri / Shutterstock. ایک محدود شیل حدود ایک صارف کے اکاؤنٹ لینکس پر کیا کر سکتے ہیں. ا�..


KDE کنیکٹ آخر میں آئی فون آ رہا ہے

لینکس Oct 26, 2025

KDE. اگر آپ اپنے فون کو اپنے ساتھ اچھا لگانے کے لئے ایک آسان طریقہ تلاش کر رہے ہیں KDE ڈیسک ٹاپ ..


پوپ! _OS کیا ہے؟

لینکس Oct 20, 2025

آپ کے بارے میں سنا ہے تو پاپ! _OS ، آپ لوگوں کو اکثر بہترین ونڈوز متبادل یا گیمنگ کے لئے مثالی لینکس ..


Fedora کے 35 میں نیا کیا ہے

لینکس Nov 2, 2024

Fedora 35، لال ٹوپی مفت لینکس کی تقسیم (Distro)، 2 نومبر، 2021 کو جاری کیا گیا تھا. پیچھے کے مناظر کے مو�..


10 بنیادی لینکس حکم

لینکس Oct 13, 2025

بس لینکس پر شروع ہو رہی ہے؟ اپنے آپ کو کمانڈ لائن کے ساتھ آرام دہ بنانا ضروری ہے. آپ نے پہلے ہی کمانڈ لائن ..


لینکس RSYNC کمانڈ کی 10 مفید مثالیں

لینکس Oct 24, 2025

لینکس rsync کمانڈ ایک طاقتور فائل کاپی کرنے اور فولڈر کی ہم آہنگی کا آلہ ہے۔ یہاں دس عام استعمال کے معام..


اقسام