কি পড়া হয়?
পড়ুন একটি বাশ বিল্টিন কমান্ড যা একটি লাইনের বিষয়বস্তু একটি ভেরিয়েবলে পড়ে। এটি বিশেষ শেল পরিবর্তনশীল IFS- এর সাথে আবদ্ধ শব্দ বিভাজনের অনুমতি দেয়। এটি প্রাথমিকভাবে ব্যবহারকারীর ইনপুট ধরার জন্য ব্যবহৃত হয় কিন্তু স্ট্যান্ডার্ড ইনপুট থেকে ইনপুট নেওয়ার ফাংশন বাস্তবায়নে ব্যবহার করা যেতে পারে।
বাশ অন্তর্নির্মিত কমান্ড সাহায্য পড়ুন
ব্যাশ স্ক্রিপ্টে রিড কমান্ডটি কীভাবে ব্যবহার করতে হয় তার আগে আমরা ডুব দেওয়ার আগে এখানে আমরা কীভাবে সহায়তা পাই তা এখানে। সেখানে আপনার পড়ার কমান্ডের জন্য উপলব্ধ সমস্ত বিকল্পগুলি বর্ণনা সহ দেখতে হবে যা আমরা উদাহরণগুলিতে কভার করার চেষ্টা করব।
কমান্ড লাইন
সাহায্য পড়ুন
আউটপুট
পড়ুন:পড়ুন [-ইয়ার্স] [-একটি অ্যারে] [-ডি শেয়ার] [-আমি পাঠ্য] [-n nchars] [-N nchars]
[-প্রম্পট] [-সময়সীমা শেষ] [-ইউ এফডি] [নাম ...]
স্ট্যান্ডার্ড ইনপুট থেকে একটি লাইন পড়ুন এবংবিভক্তএটা মাঠে।
স্ট্যান্ডার্ড ইনপুট থেকে বা থেকে একটি একক লাইন পড়েফাইলবর্ণনাকারী এফডি
যদিদ্য-উবিকল্প সরবরাহ করা হয়। লাইন হলবিভক্তমাঠেহিসাবেশব্দ দিয়ে
বিভাজন, এবং প্রথম শব্দটি প্রথম NAME, দ্বিতীয়টি বরাদ্দ করা হয়েছে
শব্দটি দ্বিতীয় NAME- এর জন্য, এবং তাই, নির্ধারিত কোনো অবশিষ্ট শব্দের সাথে
দ্যশেষনাম শুধুমাত্র অক্ষর পাওয়া যায়ভিতরে $ IFSস্বীকৃত হয়হিসাবেশব্দ
সীমাবদ্ধতা।
যদি কোন নাম সরবরাহ করা না হয়, লাইনপড়ুনসংরক্ষণ করা হয়ভিতরেউত্তর পরিবর্তনশীল।
বিকল্প:
-প্রতিঅ্যারে শব্দ বরাদ্দপড়ুনঅ্যারের ক্রমিক সূচকগুলিতে
পরিবর্তনশীল ARRAY, শূন্য থেকে শুরু
-ডিডিলিমচালিয়ে যান পর্যন্তDELIM এর প্রথম চরিত্রপড়ুনবরং
নতুন লাইনের চেয়ে
-লাইন পেতে রেডলাইন ব্যবহার করুনভিতরেএকটি ইন্টারেক্টিভ শেল
-আইটেক্সট ব্যবহার করুনহিসাবেপ্রাথমিক পাঠ্যজন্যরিডলাইন
-এনncharsপ্রত্যাবর্তনঅপেক্ষা করার পরিবর্তে NCHARS অক্ষর পড়ার পরে
জন্যএকটি নতুন লাইন, কিন্তু একটি ডিলিমিটারকে সম্মান করুনযদিকম
NCHARS অক্ষর হলপড়ুনডিলিমিটারের আগে
-এনncharsপ্রত্যাবর্তনঠিক NCHARS অক্ষর পড়ার পরে, যদি না
EOF সম্মুখীন হয় বাপড়ুন বারআউট, কোন উপেক্ষা
ডিলিমিটার
-পিপ্রম্পট আউটপুট স্ট্রিং PROMPT এর আগে একটি নতুন নতুন লাইন ছাড়াই
প্রয়াসপড়ুন
-আরকরব্যাকস্ল্যাশগুলিকে কোনও অক্ষর থেকে পালাতে দেবেন না
-এসকরনাবের করে দিলএকটি টার্মিনাল থেকে ইনপুট আসছে
-টিসময় শেষসময়বাইরে এবংপ্রত্যাবর্তনব্যর্থতাযদিপ্রতিসম্পূর্ণলাইন
ইনপুট নয়পড়ুনTIMEOUT সেকেন্ডের মধ্যে। এর মান
TMOUT ভেরিয়েবল হল ডিফল্ট টাইমআউট। TIMEOUT হতে পারে a
ভগ্নাংশ সংখ্যা। যদি TIMEOUT হয়0,পড়ুনফিরে আসে
অবিলম্বে, চেষ্টা না করেপড়ুনকোন তথ্য, ফিরে
শুধুমাত্র সাফল্যযদিনির্দিষ্ট উপর ইনপুট পাওয়া যায়
ফাইলবর্ণনাকারী। দ্যপ্রস্থানঅবস্থা এর চেয়ে বড়128
যদিসময়সীমা অতিক্রম করেছে
-উfdপড়ুনথেকেফাইলস্ট্যান্ডার্ড ইনপুটের পরিবর্তে বর্ণনাকারী এফডি
প্রস্থান অবস্থা:
দ্যপ্রত্যাবর্তনকোড শূন্য, যদি না ফাইলের শেষের সম্মুখীন হয়,পড়ুন বারবাইরে
(ভিতরে যা কেসএটা128 এর চেয়ে বড়), একটি পরিবর্তনশীল নিয়োগ ভুল
ব্যবহারকারীর ইনপুট ধরা
ইন্টারেক্টিভ ব্যাশ স্ক্রিপ্ট ব্যবহারকারীর ইনপুট ধরা ছাড়া কিছুই নয়। রিড বিল্টইন ব্যবহারকারীদের ইনপুট ব্যাশ স্ক্রিপ্টের মধ্যে ধরা যেতে পারে এমন পদ্ধতি সরবরাহ করে।
ইনপুট একটি লাইন ধরা
ইনপুটের একটি লাইন ধরার জন্য নাম এবং বিকল্পগুলি পড়ার প্রয়োজন হয় না। যখন NAME নির্দিষ্ট করা হয় না, REPLY নামে একটি পরিবর্তনশীল ব্যবহারকারীর ইনপুট সংরক্ষণ করতে ব্যবহৃত হয়।
কমান্ড
{বের করে দিল -এন 'কিছু টাইপ করুন এবং এন্টার টিপুন:';
পড়ুন;
বের করে দিলআপনি টাইপ করেছেন$ {উত্তর দিন}
}
আউটপুট
কিছু টাইপ করুন এবং এন্টার টিপুন: কিছু(নতুন লাইন)আপনি কিছু টাইপ করেছেন
ইনপুট একটি শব্দ ধরা
ইনপুট একটি শব্দ ধরতে, -d বিকল্প প্রয়োজন। একটি শব্দের ক্ষেত্রে আমরা একটি স্থান -d সেট করব, '-d' পড়ব। অর্থাৎ যখন ব্যবহারকারী স্পেস বার টিপবে তখন শব্দটির সাথে REPLY লোড হবে।
মনে রাখবেন যে -d বিকল্পটি সেট করা হলে, ব্যাকস্পেস প্রত্যাশা অনুযায়ী কাজ করে না। ব্যাকস্পেসে, ইনপুট শব্দটি ধরার চেষ্টা করার সময়, -e বিকল্পটি ব্যবহার করা যেতে পারে, পড়ুন -e ‘-d’।
কমান্ড
বের করে দিল -এন 'কিছু টাইপ করুন এবং স্পেস চাপুন:';
পড়ুন '-ডি';
বের করে দিল '';
বের করে দিল 'আপনি টাইপ করেছেন$ {উত্তর দিন}'
}
আউটপুট
কিছু টাইপ করুন এবং স্পেস হিট করুন: কিছু(স্থান)আপনি কিছু টাইপ করেছেন
প্রম্পট ব্যবহারকারী
ইন্টারেক্টিভ ব্যাশ স্ক্রিপ্টে একজন ব্যবহারকারীকে অনুরোধ করা হয় যে ব্যবহারকারীকে কোন ইনপুট প্রত্যাশিত তা বলার জন্য একটি বার্তার প্রয়োজন হতে পারে। আমরা সবসময় ইকো বিল্টিন ব্যবহার করে এটি সম্পন্ন করতে পারি। যাইহোক, দেখা যাচ্ছে রিড ব্যবহার করে একটি বিকল্প আছে।
একটি শব্দের জন্য ব্যবহারকারীকে প্রম্পট করুন
ইনপুট শব্দটি ধরার ক্ষেত্রে, আমরা টাইপ কিছু লিখতে এবং স্পেস হিট করতে ইকো ব্যবহার করেছি: '-d' পড়ার আগে স্ট্যান্ডার্ড আউটপুটে। -P বিকল্পটি একটি স্ট্যান্ডার্ড ইনপুট থেকে পড়ার আগে একটি বার্তা প্রদর্শন করার অনুমতি দেয়।
কমান্ড
{পড়ুন -পি 'কিছু টাইপ করুন এবং স্পেস চাপুন:' '-ডি';
বের করে দিল '';
বের করে দিল 'আপনি টাইপ করেছেন$ {উত্তর দিন}'
}
আউটপুট
কিছু টাইপ করুন এবং স্পেস হিট করুন: কিছু(স্থান)আপনি কিছু টাইপ করেছেন
একটি গোপন জন্য ব্যবহারকারী প্রম্পট
যখন ব্যবহারকারীর ইনপুট ধরার সময় এটি টার্মিনালে না দেখানো হয়, -s বিকল্পটি কাজে আসে। read -s -p আপনাকে ব্যবহারকারীর ইনপুট ধরতে এবং লুকানোর অনুমতি দেয়।
কমান্ড
{পড়ুন -এস -পি 'এমন কিছু টাইপ করুন যা আমি গোপন রাখার প্রতিশ্রুতি দিচ্ছি:'
বের করে দিল '';
বের করে দিল 'তোমার গোপনকথা আমার কাছে নিরাপদ';সেট না করাউত্তর দিন;
বের করে দিল '$ {উত্তর দিন}'
}
আউটপুট
এমন কিছু টাইপ করুন যা আমি গোপন রাখার প্রতিশ্রুতি দিচ্ছি:তোমার গোপনকথা আমার কাছে নিরাপদ
রিড ব্যবহার করে ফাংশন
এখানে ব্যাশে ফাংশনের উদাহরণ রয়েছে যা রিড এবং স্ট্যান্ডার্ড ইনপুট ব্যবহার করে
মূল ধারণা
রিড ব্যবহার করে ফাংশন পাইপ করা স্ট্যান্ডার্ড ইনপুট এবং প্যারামিটার ব্যবহার করে। প্রধান ইনপুট প্রক্রিয়া যেমন একটি ফাইলের লাইনগুলি পাইপের মাধ্যমে স্ট্যান্ডার্ড ইনপুটের মাধ্যমে প্রেরণ করা হয়। অন্যান্য ইনপুট যদি-কোন এবং বিকল্প প্যারামিটার হিসাবে পাস করা হয়।
পড়ুন -টি ঘNAME1 NAME2 ...পড়ুনইহা একটিঅন্তর্নির্মিত কমান্ড
-t 1 স্ট্যান্ডার্ড ইনপুটের মাধ্যমে একটি লাইন ফেরত দেওয়ার জন্য অনির্দিষ্টকালের জন্য বাশ স্ক্রিপ্টকে অপেক্ষা করতে বাধা দেয়। যদি স্ট্যান্ডার্ড ইনপুট প্রাথমিকভাবে খালি থাকে, ফাংশনটি 142 এর একটি প্রস্থান কোড দিয়ে ফিরে আসে যা বোঝায় যে নির্ধারিত সময়সীমার মধ্যে কোন তারিখ পড়া হয়নি
NAME1 NAME2 হল পরিবর্তনশীল নাম... অনেক পরিবর্তনশীল নাম তালিকাভুক্ত হতে পারে
এখন যেহেতু ভিত্তির কাজগুলি সেট করা হয়েছে, আসুন দেখি রিড ব্যবহার করে কীভাবে পরিচিত ফাংশনগুলি বাস্তবায়িত হয়।
রিড ব্যবহার করে ফাংশনে যোগদান করুন
ধরুন আমরা একটি জয়েন ফাংশন চাই যা শব্দের একটি তালিকা নেয় এবং একটি ডিলিমিটার দ্বারা যুক্ত শব্দের আরেকটি তালিকা প্রদান করে। এখানে আমরা কিভাবে রিড ব্যবহার করে একটি যোগদান ফাংশন বাস্তবায়ন করতে পারি।
লিপি#!/বিন/ব্যাশ
## যোগদান করুন
## সংস্করণ 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কমান্ড লাইন
বের করে দিলএকটি খ| যোগদান | যোগদান। ।|আউটপুট
প্রতি|খরিড ব্যবহার করে ম্যাপ ফাংশন
ধরুন আমরা একটি মানচিত্র ফাংশন চাই যা একটি তালিকা নেয় এবং অন্য একটি ফাংশন দ্বারা সংশোধিত একই সংখ্যক উপাদান সম্বলিত আরেকটি তালিকা প্রদান করে। এখানে আমরা কিভাবে রিড ব্যবহার করে একটি ম্যাপ ফাংশন বাস্তবায়ন করতে পারি।
লিপি#!/বিন/ব্যাশ
## মানচিত্র
## সংস্করণ 0.0.1 - প্রাথমিক
############################################
মানচিত্র() { { স্থানীয়ফাংশন_নাম;ফাংশন_নাম='$ {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
কমান্ড
বের করে দিল {ঘ..10} |মানচিত্র
আউটপুট
ঘ4
9
16
25
36
49
64
81
100
রিড ব্যবহার করে ফিল্টার ফাংশন
ধরুন আমরা একটি ফিল্টার ফাংশন চাই যা একটি তালিকা গ্রহণ করে এবং অন্য ফাংশন দ্বারা নির্ধারিত শর্ত সমৃদ্ধ উপাদানগুলির একটি সাবলিস্ট প্রদান করে। এখানে আমরা কিভাবে রিড ব্যবহার করে একটি ফিল্টার ফাংশন বাস্তবায়ন করতে পারি।
লিপি#!/বিন/ব্যাশ
## ছাঁকনি
## সংস্করণ 0.0.1 - প্রাথমিক
############################################
ছাঁকনি() { { স্থানীয়ফাংশন_নাম;ফাংশন_নাম='$ {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};পরীক্ষা !$((আমি% 2 )) -ইক ঘ;}বের করে দিল {ঘ..10} |বিজোড় ফিল্টার
আউটপুট
ঘ 3 5 7 9রিড ব্যবহার করে লুপ
রিড ব্যবহার করে লুপগুলি আপনাকে একটি ফাইলের লাইনের মাধ্যমে পুনরাবৃত্তি করতে দেয় যা তৈরি করা বা ইতিমধ্যে বিদ্যমান।
বাম দিকের জন্য লুপ পড়ার সময় বেসিক (lhs)
আমাদের একটি কমান্ড বা ফাংশন (lhs) আছে যা একটি ফাইলে লাইন তৈরি করতে পারে যা রিড এবং কিছুক্ষণ লুপ ব্যবহার করে লুপ করা যায়।
গঠন করুনlhs| যখন পড়ুন
কর
সত্য
সম্পন্ন
lhs হল aকমান্ডযে লাইনগুলির একটি তালিকা প্রদান করে
কমান্ড
seq 5 | যখন পড়ুনআমিকর
বের করে দিল $ {i}
সম্পন্ন
আউটপুট
ঘ2
3
4
5
ডানদিকের দিকের লুপ পড়ার সময় বেসিক (rhs)
আমাদের কাছে একটি ফাইল (rhs) আছে যা রেড এবং কিছুক্ষণ লুপ ব্যবহার করে লুপ করা যায়।
গঠন করুনযখন পড়ুন
কর
সত্য
সম্পন্ন <আরএইচএস
rhs হল aফাইললাইন ধারণকারী
কমান্ড
seq 5 >আরএইচএসযখন পড়ুনআমি
কর
বের করে দিল $ {i}
সম্পন্ন <আরএইচএস
আউটপুট
ঘ
2
3
4
5
কাস্টম lhs পড়ার সময় লুপ করার সময়
আমাদের কাছে শব্দের একটি প্রবাহ রয়েছে যা আমরা রিড ব্যবহার করে লুপ করতে চাই।
গঠন করুন(
আইএফএস=''
lhs| যখন পড়ুন
কর
সত্য
সম্পন্ন
)
lhs শব্দের একটি তালিকা
কমান্ড
(আইএফএস=''
বের করে দিল {ঘ..5} | যখন পড়ুনআমি
কর
বের করে দিল '$ {i}
সম্পন্ন
)
আউটপুট
ঘ 2 3 4 5স্ট্যান্ডার্ড ইনপুটের পরিবর্তে যেকোন fd থেকে পড়া
রিড বিল্টইন অপশনটি প্রায়শই অস্পৃশ্য রেখে দেওয়া হয় যেটি আপনাকে কোন ফাইল বর্ণনাকারী থেকে পড়তে হবে তা সুনির্দিষ্ট করতে দেয়, পড়ুন -u FD। ডিফল্টরূপে এফডি স্ট্যান্ডার্ড ইনপুট হিসেবে বিবেচিত হয়।
মূল ধারণা
যখন একটি ফাইল খোলা ফাইল বর্ণনাকারী নিয়োগ করা হয়। ব্যাশে আইও পুন redনির্দেশ একটি নির্দিষ্ট ফাইল বর্ণনাকারীর সাথে একটি ফাইল খোলা রাখার অনুমতি দেয়। আমরা ফাইলটি লিখতে, এটি থেকে পড়তে এবং এটি সম্পন্ন করার পরে এটি বন্ধ করার অনুমতি দেওয়া হয়।
_(){
বিড়াল /দেব/খালি>myfifo;# খালি মাইফিফো
এক্সিকিউট 3<myfifo;# ফাইল myfifo fd 3 হিসাবে খুলুন
বের করে দিল 'ওহে বিশ্ব! - fd 3 'থেকে >myfifo;# myfifo তে লিখুন
পড়ুন -উ 3;# fd 3 থেকে লাইন পড়ুন
এক্সিকিউট 3> &-;# fd 3 বন্ধ করুন
বের করে দিল $ {উত্তর দিন} # আউটপুট লাইন বন্ধ করার আগে fd 3 থেকে পড়ে
}
_# ওহে বিশ্ব! fd 3 থেকে
ফাইল বর্ণনাকারী এবং পড়া -ইউ এফডি সহ একটি ট্রেন তৈরি করা
শুধু মজা করার জন্য আমি সিদ্ধান্ত নিয়েছি যে ফাইল বর্ণনাকারী এবং পড়া -U FD দিয়ে একটি ট্রেন তৈরি করব। প্রতিটি ফাইল বর্ণনাকারীর কাছে একটি সংখ্যা লেখা হয়। প্রতিটি ফাইল বর্ণনাকারী নীচের ফাইল বর্ণনাকারী 1 থেকে পড়ে এবং নিজের সাথে যুক্ত হয়।
কমান্ড লাইন
বাশlinuxhint.com/নির্মাণ/test-read-fd.sh ট্রেন10আউটপুট
fds আরম্ভ করা হচ্ছে ...fd আরম্ভ করা3...
fd3অন্তর্নির্মিত
fd আরম্ভ করা4...
fd4অন্তর্নির্মিত
fds intialized
fd থেকে পড়া3এবং4...
4 3
পরিষ্কার করার আগে fds
0 ঘ 2 3 4 5
পরিষ্কার আপ ...
এফডি পরিষ্কার করা ...
সম্পন্নfds পরিষ্কার করা
পরিষ্কার করার পরে fds
0 ঘ 2 3
Read -u FD ব্যবহার করে ফাংশন এড়িয়ে যান
আপনি যদি দৌড়াচ্ছেন
তোমার নাম -প্রতিMINGW64_NT-10.0DESKTOP-XVVVVVV 2.7.0(0.307/5/3)
2017।-02-17 14:বিশx86_64 মিসিস
বাশ -রূপান্তর
জিএনইউবাশ, সংস্করণ 4.4.12(ঘ)-মুক্তি(x86_64-pc-msys)
একটি স্কিপ ফাংশন বাস্তবায়নের জন্য একটি বাগের কারণে এটি সম্ভব হতে পারে যা স্ক্রিপ্টের উৎস পড়ার আগে ফাংশনের বাইরে একটি বাশ স্ক্রিপ্টে নিম্নলিখিত লাইনটি এড়িয়ে যায়। মনে রাখবেন এটি বেশিরভাগ সিস্টেমে কাজ করে না। উদাহরণ স্বরূপ,
তোমার নাম -প্রতিলিনাক্স 4.9.0-8-এএমডি 64#1 ডেবিয়ান এসএমপি 4.9.144-3.1 (2019-02-19) x86_64 জিএনইউ/লিনাক্স
বাশ -রূপান্তর
জিএনইউবাশ, সংস্করণ 4.4.12(ঘ)-মুক্তি(x86_64-pc-linux-gnu)
skip উড়ে না।
ফাংশন
এড়িয়ে যান() { পড়ুন -উ 31;}
কমান্ড
এড়িয়ে যানবের করে দিললাইন এড়িয়ে গেল
সত্য
আউটপুট
(খালি)শেষের সারি
ব্যাশে নির্মিত বিল্ডটি ব্যবহারকারীর ইনপুট ধরার চেয়ে বেশি করে। এটি ব্যাশ স্ক্রিপ্টে ব্যবহৃত ফাইল বর্ণনাকারীদের মধ্যে ফাংশন, লুপ এবং বিনিময়ে ব্যবহার করা যেতে পারে। রিড অ্যান্ড ফাইল ডেস্ক্রিপ্টর ব্যবহার করে উপলক্ষ্য অনুসন্ধানে ইস্টার ডিম পাওয়া যেতে পারে।