باش ریڈ کمانڈ۔

Bash Read Command



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

کیا پڑھا ہے؟

ریڈ ایک باش بلٹ ان کمانڈ ہے جو ایک لائن کے مندرجات کو ایک متغیر میں پڑھتا ہے۔ یہ لفظ تقسیم کرنے کی اجازت دیتا ہے جو خصوصی شیل متغیر IFS سے جڑا ہوا ہے۔ یہ بنیادی طور پر صارف کے ان پٹ کو پکڑنے کے لیے استعمال کیا جاتا ہے لیکن معیاری ان پٹ سے ان پٹ لینے والے افعال کو نافذ کرنے کے لیے استعمال کیا جا سکتا ہے۔







باش بلٹ ان کمانڈ ہیلپ پڑھیں۔

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



کمانڈ لائن



مدد پڑھیں

آؤٹ پٹ۔





پڑھیں:پڑھیں [-] [-ایک صف] [-ڈی شیئر] [-میں متن] [-nchars] [-N nchars]
[-فوری اشارہ] [-ٹائم آؤٹ] [-u ایف ڈی] [نام ...]

معیاری ان پٹ سے ایک لائن پڑھیں اورتقسیمیہ کھیتوں میں

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

اگر کوئی نام فراہم نہیں کیا جاتا ہے تو ، لائن۔پڑھیںذخیرہ کیا جاتا ہےمیںجواب متغیر.

اختیارات:
-کوصفوں کو الفاظ تفویض کریں۔پڑھیںصف کے ترتیب وار اشاریوں کو۔
متغیر ARRAY ، صفر سے شروع ہو رہا ہے۔
-ڈیڈیلمجاری رہے تکDELIM کا پہلا کردار ہے۔پڑھیں، بلکہ
نئی لائن کے مقابلے میں
-لائن حاصل کرنے کے لیے ریڈ لائن کا استعمال کریں۔میںایک انٹرایکٹو شیل
-میںمتن کا استعمال TEXTجیسا کہابتدائی متنکے لیےریڈ لائن۔
ncharsواپسیانتظار کرنے کے بجائے NCHARS حروف پڑھنے کے بعد۔
کے لیےایک نئی لائن ، لیکن ایک حد بندی کا احترام کریں۔اگرسے کم

NCHARS حروف ہیں۔پڑھیںحد بندی سے پہلے
ncharsواپسیصرف NCHARS حروف کو پڑھنے کے بعد ، جب تک
EOF کا سامنا کرنا پڑتا ہے یاپڑھیں اوقاتباہر ، کسی کو نظر انداز کرنا۔
حد بندی
-پیاسٹرنگ PROMPT کو بغیر کسی پچھلی لائن کے آؤٹ پٹ کریں۔
کرنے کی کوششپڑھیں
کیابیک سلیش کو کسی بھی کردار سے بچنے کی اجازت نہ دیں۔
کیانہیںباہر پھینک دیاٹرمینل سے آنے والا ان پٹ۔
-ٹیوقت ختموقتباہر اورواپسیناکامیاگرکومکملکی لائن
ان پٹ نہیں ہےپڑھیںTIMEOUT سیکنڈ میں کی قدر
TMOUT متغیر ڈیفالٹ ٹائم آؤٹ ہے۔ TIMEOUT a ہوسکتا ہے۔
جزوی تعداد اگر TIMEOUT ہے۔،پڑھیںواپسی
فوری طور پر ، کوشش کیے بغیر۔پڑھیںکوئی ڈیٹا ، واپس آ رہا ہے۔
صرف کامیابیاگران پٹ مخصوص پر دستیاب ہے۔
فائلبیان کرنے والا کیباہر نکلیںحیثیت اس سے زیادہ ہے128۔
اگروقت ختم ہو گیا ہے
ایف ڈیپڑھیںسےفائلمعیاری ان پٹ کے بجائے وضاحتی ایف ڈی۔

باہر نکلنے کی حالت:
کیواپسیکوڈ صفر ہے ، جب تک کہ فائل کا اختتام نہ ہو ،پڑھیں اوقاتباہر
(میں کونسا معاملہیہ128 سے زیادہ ہے) ، ایک متغیر تفویض غلطی۔

صارف کا ان پٹ پکڑنا۔

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

ان پٹ کی ایک لائن کو پکڑنا۔

ان پٹ کی ایک لائن کو پکڑنے کے لیے نام اور اختیارات پڑھنے کی ضرورت نہیں ہے۔ جب NAME متعین نہیں ہوتا ہے ، REPLY نامی متغیر صارف کے ان پٹ کو ذخیرہ کرنے کے لیے استعمال ہوتا ہے۔



احکامات

{
باہر پھینک دیا 'کچھ ٹائپ کریں اور انٹر دبائیں:'؛
پڑھیں؛
باہر پھینک دیاآپ نے ٹائپ کیا۔$ {جواب دیں}
}

آؤٹ پٹ۔

کچھ ٹائپ کریں اور انٹر دبائیں: کچھ۔(نئی لائن)
آپ نے کچھ ٹائپ کیا۔

ان پٹ کا ایک لفظ پکڑنا۔

ان پٹ کا ایک لفظ پکڑنے کے لیے ، -d آپشن درکار ہے۔ کسی لفظ کی صورت میں ہم ایک جگہ پر -d سیٹ کریں گے ، '-d' پڑھیں۔ اسی وقت جب صارف اسپیس بار کو دبائے گا تو جواب کے ساتھ لفظ لوڈ ہوگا۔

نوٹ کریں کہ جب -d آپشن سیٹ کیا جاتا ہے ، بیک اسپیس توقع کے مطابق کام نہیں کرتا ہے۔ بیک اسپیس پر ، ان پٹ کے لفظ کو پکڑنے کی کوشش کرتے ہوئے ، -e آپشن استعمال کیا جا سکتا ہے ، پڑھیں -e ‘-d‘۔

احکامات

{
باہر پھینک دیا 'کچھ ٹائپ کریں اور اسپیس ماریں:'؛
پڑھیں '-ڈی'؛
باہر پھینک دیا ''؛
باہر پھینک دیا 'آپ نے ٹائپ کیا$ {جواب دیں}'
}

آؤٹ پٹ۔

کچھ ٹائپ کریں اور اسپیس کو ماریں: کچھ۔(خلا)
آپ نے کچھ ٹائپ کیا۔

فوری صارف۔

انٹرایکٹو باش سکرپٹ میں ایک صارف کو اشارہ کرنے کے لیے پیغام کی ضرورت پڑسکتی ہے تاکہ صارف کو بتائے کہ ان پٹ کی کیا توقع ہے۔ ہم ہمیشہ ایکو بلٹ ان کا استعمال کرتے ہوئے اسے پورا کرسکتے ہیں۔ تاہم ، یہ پتہ چلتا ہے کہ پڑھنے کا استعمال کرتے ہوئے ایک آپشن موجود ہے۔

کسی لفظ کے لیے فوری صارف۔

ان پٹ کے ایک لفظ کو پکڑنے میں ، ہم نے ایکو کو ٹائپ ٹائپ لکھنے اور اسپیس کو مارنے کے لیے استعمال کیا: '-d' پڑھنے سے پہلے معیاری آؤٹ پٹ پر۔ -p آپشن معیاری ان پٹ سے پڑھنے سے پہلے کسی پیغام کو ظاہر کرنے کی اجازت دیتا ہے۔

احکامات

{
پڑھیں -پی 'کچھ ٹائپ کریں اور اسپیس ماریں:' '-ڈی'؛
باہر پھینک دیا ''؛
باہر پھینک دیا 'آپ نے ٹائپ کیا$ {جواب دیں}'
}

آؤٹ پٹ۔

کچھ ٹائپ کریں اور اسپیس کو ماریں: کچھ۔(خلا)
آپ نے کچھ ٹائپ کیا۔

کسی راز کے لیے فوری صارف۔

جب ٹرمینل میں دکھائے بغیر صارف کے ان پٹ کو پکڑنا ، -s آپشن کام آتا ہے۔ ریڈ -ایس -پی آپ کو صارف کے ان پٹ کو مندرجہ ذیل طور پر پکڑنے اور چھپانے کی اجازت دیتا ہے۔

احکامات

{
پڑھیں -پی 'کوئی ایسی چیز ٹائپ کریں جس کا میں وعدہ کرتا ہوں اسے خفیہ رکھنے کے لیے:'
باہر پھینک دیا ''؛
باہر پھینک دیا 'تمہارا راز میرے پاس محفوظ ہے'؛سیٹ نہیںجواب دیں
باہر پھینک دیا '$ {جواب دیں}'
}

آؤٹ پٹ۔

کوئی ایسی چیز ٹائپ کریں جس کا میں اسے خفیہ رکھنے کا وعدہ کرتا ہوں:
آپ کا راز میرے پاس محفوظ ہے۔

پڑھنے کا استعمال کرتے ہوئے افعال۔

یہاں بش میں افعال کی مثالیں ہیں جو پڑھیں اور معیاری ان پٹ استعمال کریں۔

بنیادی تصور۔

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

پڑھیں -ٹی NAME1 NAME2 ...

پڑھیںایک ھےبلٹ کمانڈ

-t 1 باش سکرپٹ کو معیاری ان پٹ کے ذریعے لائن کی واپسی کے لیے غیر معینہ مدت تک انتظار کرنے سے روکتا ہے۔ اگر معیاری ان پٹ ابتدائی طور پر خالی ہے تو ، فنکشن 142 کے ایگزٹ کوڈ کے ساتھ لوٹتا ہے جو اس بات کی نشاندہی کرتا ہے کہ مقررہ ٹائم آؤٹ مدت میں کوئی تاریخ نہیں پڑھی گئی

NAME1 NAME2 متغیر نام ہیں۔

... بہت سے متغیر نام درج ہو سکتے ہیں۔

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

پڑھنے کا استعمال کرتے ہوئے فنکشن میں شامل ہوں۔

فرض کریں کہ ہم ایک جوائن فنکشن چاہتے ہیں جو الفاظ کی فہرست لیتا ہے اور الفاظ کی ایک اور فہرست لوٹاتا ہے جس میں ڈیلیمیٹر شامل ہوتا ہے۔ یہ ہے کہ ہم پڑھنے کے ذریعے جوائن فنکشن کو کس طرح نافذ کرسکتے ہیں۔

سکرپٹ

#!/bin/bash
## شمولیت
## ورژن 0.0.2 - تکرار پیرامیٹرز کو ٹھیک کریں۔
###############################################################################
شمولیت() { { مقامیحد بندی؛محدود کرنے والا='$ {1-}'؛مقامیآؤٹ لیمیٹر
آؤٹ لیمیٹر='$ {2-.}'؛}
مقامیگاڑی
مقامیسی ڈی آر
مقامیآئی ایف ایس
آئی ایف ایس='$ {indelimiter}'
پڑھیں -ٹی کار سی ڈی آر|| واپسی
پرکھ '$ {cdr}' || { باہر پھینک دیا '$ {کار}'؛واپسی؛}
باہر پھینک دیا '$ {کار}$ {آؤٹ لیمیٹر}$ {cdr}' | $ {FUNCNAME} '$ {indelimiter}'
'$ {آؤٹ لیمیٹر}'
}
###############################################################################
## create-stub2.sh v0.1.2 کے ذریعہ تیار کیا گیا۔
## سوم ، 17 جون 2019 12:24:59 +0900 پر۔
# دیکھیں۔
###############################################################################

ذریعہ: join.sh
کمانڈ لائن

باہر پھینک دیاایک ب| شمولیت

آؤٹ پٹ۔

a.b

کمانڈ لائن

باہر پھینک دیاایک ب| شمولیت | شمولیت. ۔|

آؤٹ پٹ۔

کو|ب

ریڈ کا استعمال کرتے ہوئے نقشہ کے افعال۔

فرض کریں کہ ہم ایک نقشہ فنکشن چاہتے ہیں جو ایک فہرست لیتا ہے اور ایک اور فہرست لوٹاتا ہے جس میں عناصر کی ایک ہی تعداد ہوتی ہے جو کسی دوسرے فنکشن کے ذریعے تبدیل کی جاتی ہے۔ یہ ہے کہ ہم ریڈ کا استعمال کرتے ہوئے نقشہ فنکشن کو کس طرح نافذ کرسکتے ہیں۔

سکرپٹ

#!/bin/bash
## نقشہ
## ورژن 0.0.1 - ابتدائی۔
###############################################################################
نقشہ() { { مقامیfunction_namefunction_name='$ {1}'؛}
مقامیگاڑی
مقامیسی ڈی آر
مقامیآئی ایف ایس
آئی ایف ایس='$ {indelimiter-}'
پڑھیں -ٹی کار سی ڈی آر|| واپسی
پرکھ '$ (اعلان -f $ {function_name})' || واپسی
پرکھ '$ {کار}' || { سچ؛واپسی؛}
$ {function_name} $ {کار}
باہر پھینک دیا '$ {cdr}' | $ {FUNCNAME} '$ {function_name}'
}
###############################################################################
## create-stub2.sh v0.1.2 کے ذریعہ تیار کیا گیا۔
## منگل ، 18 جون 2019 08:33:49 +0900 پر۔
# دیکھیں۔
###############################################################################

ذریعہ: map.sh
احکامات

این ایس() { مقامی -میں میں=$ {1}؛باہر پھینک دیا$((میں** ))؛}
باہر پھینک دیا {..10۔} |نقشہ پاؤ

آؤٹ پٹ۔




16۔
25۔
36۔
49۔
64۔
81۔
100۔

ریڈ کا استعمال کرتے ہوئے فلٹر فنکشن۔

فرض کریں کہ ہم ایک فلٹر فنکشن چاہتے ہیں جو ایک فہرست لیتا ہے اور عناصر کی ایک ذیلی فہرست واپس کرتا ہے جو کسی اور فنکشن کی طرف سے مقرر کردہ حالات کو مطمئن کرتا ہے۔ یہ ہے کہ ہم ریڈ کا استعمال کرتے ہوئے فلٹر فنکشن کو کیسے نافذ کرسکتے ہیں۔

سکرپٹ

#!/bin/bash
## فلٹر
## ورژن 0.0.1 - ابتدائی۔
###############################################################################
فلٹر() { { مقامیfunction_namefunction_name='$ {1}'؛}
مقامیگاڑی
مقامیسی ڈی آر
مقامیآئی ایف ایس
آئی ایف ایس='$ {indelimiter-}'
پڑھیں -ٹی کار سی ڈی آر|| واپسی
پرکھ '$ (اعلان -f $ {function_name})' || واپسی
پرکھ '$ {کار}' || { سچ؛واپسی؛}
$ {function_name} '$ {کار}' || باہر پھینک دیا '$ {کار}'
باہر پھینک دیا '$ {cdr}' | $ {FUNCNAME} '$ {function_name}'
}
###############################################################################
## create-stub2.sh v0.1.2 کے ذریعہ تیار کیا گیا۔
## منگل ، 18 جون 2019 13:19:54 +0900 پر۔
# دیکھیں۔
###############################################################################

ذریعہ: filter.sh

احکامات

طاق() { مقامی -میں میں=$ {1}؛پرکھ !$((میں٪ )) -ایک ؛}
باہر پھینک دیا {..10۔} |فلٹر عجیب

آؤٹ پٹ۔

پڑھنے کا استعمال کرتے ہوئے لوپس۔

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

بنیادی جبکہ بائیں ہاتھ کی طرف لوپ پڑھیں (lhs)

ہمارے پاس ایک کمانڈ یا فنکشن (lhs) ہے جو کہ فائل میں لائنیں پیدا کر سکتا ہے جسے ریڈ اور تھوڑی دیر کے لوپ کے ذریعے لوپ کیا جا سکتا ہے۔

تعمیر

lhs| جبکہ پڑھیں
کیا
سچ
ہو گیا
lhs ہے aکمانڈجو لائنوں کی فہرست لوٹاتا ہے۔

احکامات

سیک | جبکہ پڑھیںمیں
کیا
باہر پھینک دیا $ {i}
ہو گیا

آؤٹ پٹ۔





بنیادی جبکہ دائیں ہاتھ کی طرف لوپ پڑھیں (rhs)

ہمارے پاس ایک فائل (rhs) ہے جس کی لکیریں پڑھنے اور تھوڑی دیر کے لوپ کے ذریعے لوپ کی جا سکتی ہیں۔

تعمیر

جبکہ پڑھیں
کیا
سچ
ہو گیا <rhs

rhs ایک ہےفائللائنوں پر مشتمل

احکامات

سیک >rhs
جبکہ پڑھیںمیں
کیا
باہر پھینک دیا $ {i}
ہو گیا <rhs

آؤٹ پٹ۔





اپنی مرضی کے مطابق lhs پڑھتے ہوئے لوپ کا استعمال کرتے ہوئے۔

ہمارے پاس الفاظ کا ایک سلسلہ ہے جسے ہم پڑھنے کے ذریعے لوپ کرنا چاہتے ہیں۔

تعمیر

(
آئی ایف ایس=''
lhs| جبکہ پڑھیں
کیا
سچ
ہو گیا
)

lhs الفاظ کی ایک فہرست ہے۔

احکامات

(
آئی ایف ایس=''
باہر پھینک دیا {..} | جبکہ پڑھیںمیں
کیا
باہر پھینک دیا '$ {i}
ہو گیا
)

آؤٹ پٹ۔

معیاری ان پٹ کے بجائے کسی بھی ایف ڈی سے پڑھنا۔

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

بنیادی تصور۔

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

_()
{
کیٹ /دیو/خالی>myfifo# خالی myfifo
عملدرآمد <myfifo# فائل کھولیں myfifo بطور ایف ڈی 3۔
باہر پھینک دیا 'ہیلو ، دنیا! ایف ڈی 3 سے >myfifo# myfifo کو لکھیں۔
پڑھیں ؛# ایف ڈی 3 سے لائن پڑھیں۔
عملدرآمد > &# بند ایف ڈی 3۔
باہر پھینک دیا $ {جواب دیں} # آؤٹ پٹ لائن بند ہونے سے پہلے ایف ڈی 3 سے پڑھی گئی۔
}
_# ہیلو ، دنیا! ایف ڈی 3 سے

فائل ڈسریکٹر اور ریڈ -یو ایف ڈی کے ساتھ ٹرین بنانا۔

صرف تفریح ​​کے لیے میں نے فائل ڈسریکٹر اور ریڈ -یو ایف ڈی کے ساتھ ٹرین بنانے کا فیصلہ کیا۔ ہر فائل ڈسریکٹر کے لیے ایک نمبر لکھا جاتا ہے۔ ہر فائل ڈسریکٹر نیچے دی گئی فائل ڈسریکٹر 1 سے پڑھتا ہے اور اپنے آپ کو جوڑتا ہے۔

کمانڈ لائن

لشکرlinuxhint.com/تعمیر/test-read-fd.sh ٹرین۔10۔

آؤٹ پٹ۔

ایف ڈی ایس شروع کرنا ...
ایف ڈی شروع کرنا...
ایف ڈیانٹیلیائزڈ
ایف ڈی شروع کرنا...
ایف ڈیانٹیلیائزڈ
ایف ڈی ایس انٹیلیائزڈ
ایف ڈی سے پڑھنااور...

صفائی سے پہلے fds

صفائی ستھرائی ...
ایف ڈی ایس کی صفائی ...
ہو گیاایف ڈی ایس کی صفائی
صفائی کے بعد fds

ریڈ -یو ایف ڈی کا استعمال کرتے ہوئے فنکشن کو چھوڑیں۔

اگر آپ بھاگ رہے ہیں۔

بے نام -کو
MINGW64_NT-10.0۔ڈیسک ٹاپ-ایکس وی وی وی وی وی وی 2.7.0۔(0.307۔//)
2017۔-02-17۔ 14۔:بیسx86_64 محترمہ۔
لشکر -ورژن
جی این یولشکر، ورژن 4.4.12۔()-رہائی(x86_64-pc-msys۔)

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

بے نام -کو
لینکس 4.9.0--امڈ 64۔#1 ڈیبین SMP 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux
لشکر -ورژن
جی این یولشکر، ورژن 4.4.12۔()-رہائی(x86_64-pc-linux-gnu)

اڑنا نہیں اڑتا

فنکشن

چھوڑ دو() { پڑھیں 31۔؛}

احکامات

چھوڑ دو
باہر پھینک دیالائن چھوٹ گئی
سچ

آؤٹ پٹ۔

(خالی)

نیچے کی لکیر۔

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